Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GDB中用一个命令打印多个变量_Gdb - Fatal编程技术网

在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
的命令。 以一行字结尾,写着just
End

>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的方式