我想从gdb执行shell命令,这个shell命令需要一个参数,这个参数是一个gdb变量。如何在将命令和参数传递给shell解释器之前让gdb解释这个变量?
例如,在gdb提示符中:
(gdb) set $my_arg = 2
(gdb) shell echo $my_arg
我希望在2
上打印stdout
,但实际上它会打印一个空行。
编辑:我正在使用ndk-gdb,它不支持python脚本。
答案 0 :(得分:8)
使用新版本的gdb,您可以使用“eval”:
(gdb) set $val = 2
(gdb) eval "shell echo %d", $val
2
如果您有旧版本的gdb,那么您可以做的最好是使用“set logging”将内容写入文件,然后使用shell等实用程序将文件重写为您想要的格式。
答案 1 :(得分:3)
更新此答案不适合ndk-gdb。仅适用于gdb。
似乎不直接在shell命令中打印一个便利变量。但是你可以使用gdb python来实现它:
(gdb) set $my_arg = 2
(gdb) python gdb.execute("shell echo " + str(gdb.parse_and_eval("$my_arg")))
2
(gdb)