我在GDB中有一个名为x的变量,我希望将其与字符串进行比较。
gdb $ print $x
$1 = 0x1001009b0 "hello"
但与
进行比较if $x == "hello"
不起作用。
答案 0 :(得分:21)
正如@tlwhitec指出:
您还可以使用内置的$_streq(str1, str2)
函数:
(gdb) p $_streq($x, "hello")
此函数不需要使用Python支持配置GDB, 这意味着它们始终可用。
https://sourceware.org/gdb/onlinedocs/gdb/Convenience-Funs.html中可以找到更方便的功能。 或者使用
(gdb) help function
打印所有便利功能的列表。
对于缺少内置$_streq
函数的旧gdb,
您可以定义自己的比较
(gdb) p strcmp($x, "hello") == 0
$1 = 1
如果你不幸没有运行程序(执行核心文件或其他东西),如果你的gdb足够新用python,你可以做一些以下的效果:
(gdb) py print cmp(gdb.execute("output $x", to_string=True).strip('"'), "hello") == 0
True
或:
(gdb) define strcmp
>py print cmp(gdb.execute("output $arg0", to_string=True).strip('"'), $arg1)
>end
(gdb) strcmp $x "hello"
0