【问题标题】:Print whole string verbatim in gdb在 gdb 中逐字打印整个字符串
【发布时间】: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 似乎在字符串很长时会被切断。

【问题讨论】:

标签: c debugging gdb


【解决方案1】:
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>

【讨论】:

    【解决方案2】:

    像这样使用 gdb 的 printf 命令:

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

    而不是

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

    【讨论】:

      【解决方案3】:

      试试:

      (gdb) x /s l
      

      【讨论】:

      • 仍然得到“”的东西。
      • 这很奇怪 - 我知道 p 但不是 x /s。
      猜你喜欢
      • 2021-04-20
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2010-09-18
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多