【发布时间】:2010-02-12 15:10:00
【问题描述】:
我在 gdb 中打印一个字符串(char *)
(gdb) p l
l=0x9aa1f48 "up2 129104596496602200 19 0 0 3 0 eth1 XX :001CB",'0' <repeats 12 times>, "DC"
是否有设置让p 打印整个字符串而不填写“重复...”。在此过程中 - 还扩展了字符串的默认可打印长度,p 似乎在字符串很长时会被切断。
【问题讨论】:
我在 gdb 中打印一个字符串(char *)
(gdb) p l
l=0x9aa1f48 "up2 129104596496602200 19 0 0 3 0 eth1 XX :001CB",'0' <repeats 12 times>, "DC"
是否有设置让p 打印整个字符串而不填写“重复...”。在此过程中 - 还扩展了字符串的默认可打印长度,p 似乎在字符串很长时会被切断。
【问题讨论】:
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>
【讨论】:
像这样使用 gdb 的 printf 命令:
(gdb) printf "%s\n", a
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
而不是
(gdb) p a
$1 = 'a' <repeats 32 times>
【讨论】:
试试:
(gdb) x /s l
【讨论】:
p 但不是 x /s。