在gdb中逐字打印整个字符串

时间:2010-02-12 15:10:00

标签: c debugging gdb

我在gdb中打印一个字符串(char *)

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

是否有设置让p打印整个字符串而不填写“重复...”。在它的同时 - 也扩展了字符串的默认可打印长度,如果字符串很长,p似乎会被切断。

3 个答案:

答案 0 :(得分:13)

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>

答案 1 :(得分:6)

使用gdb的printf命令,如下所示:

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

而不是

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

答案 2 :(得分:0)

尝试:

(gdb) x /s l