在GDB中用一个命令打印多个变量
我想执行这个非常简单的命令在GDB中用一个命令打印多个变量,gdb,Gdb,我想执行这个非常简单的命令 print var1, var2, var3, var4 在gdb中随时检查变量的值 我不想使用display,因为它会把我的视图弄得乱七八糟 我该怎么做?现在我能做的就是: p var1 p var2 p var3 p var4 可能有一个更简单的解决方案,但是您可以使用GDB宏来组合一些东西:使用printf命令。这有点麻烦,但它可以很好地控制格式。从命令行: (gdb) help printf printf "printf format s
print var1, var2, var3, var4
在gdb中随时检查变量的值
我不想使用display,因为它会把我的视图弄得乱七八糟
我该怎么做?现在我能做的就是:
p var1
p var2
p var3
p var4
可能有一个更简单的解决方案,但是您可以使用GDB宏来组合一些东西:使用printf命令。这有点麻烦,但它可以很好地控制格式。从命令行:
(gdb) help printf
printf "printf format string", arg1, arg2, arg3, ..., argn
This is useful for formatted output in user-defined commands.
格式字符串与C类似(%d表示正常大小的整数,%s表示以null结尾的字符串,等等)。您只需执行此操作即可
print {var1,var2,var3,var4}
这将完成任务。使用宏:
例如,继续到下一个断点并打印
(gdb) define prm
键入用于定义prm
的命令。
以一行字结尾,写着justEnd
>continue
>print var1
>print var2
>print var3
>end
(gdb) prm
$5 = 0
$6 = 10
$7 = -1
我遇到了一个错误
数组元素必须都是相同大小的。这很快也很简单,但前提是它们都是相同的类型,或者你可以将它们有效地转换为相同的类型。这在2016年非常令人惊讶,而且这个问题仍然存在。现在是2019年。还在这里。新年快乐!哦,现在是2020年了。这个帖子看起来像youtube上的评论:D P.s.2021 yeye……我喜欢这个答案。它的一个小问题是,它最多只支持64位整数:该操作在超过8字节的整数上不可用。
(AMD64上的GCC在某些平台上模拟了\uuu int128\u t
)。当然,您可以进行移位和强制转换。这永远改变了我使用gdb的方式