在gdb中原样打印整个字符串

24

我正在使用gdb打印一个字符串(char *)

(gdb) p l
l=0x9aa1f48 "up2 129104596496602200 19 0 0 3 0 eth1 XX :001CB",'0' <repeats 12 times>, "DC"

是否有一种设置可以使p打印整个字符串而不是填充“重复...”。顺便说一句,还可以扩展字符串的默认可打印长度,如果字符串相当长,p似乎会截断它。


请参见https://dev59.com/8XVC5IYBdhLWcg3woCnN。 - John Carter
3个回答

29
set print repeats 0

示例:

(gdb) p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
$6 = 'a' <repeats 30 times>
(gdb) set print repeats 0
(gdb) p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
$7 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
(gdb) set print repeats 10
(gdb) p "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
$8 = 'a' <repeats 30 times>

13

使用gdb的printf命令,像这样:

(gdb) printf "%s\n", a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

而不是

(gdb) p a  
$1 = 'a' <repeats 32 times>

0

尝试:

(gdb) x /s l

1
仍然得到了"<repeats 12 times>"的东西。 - nos
很奇怪 - 我用 p 可以得到,但是用 x /s 就不行。 - Paul R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接