9

我想从gdb执行一个shell命令,这个shell命令需要一个参数,这个参数是一个gdb变量。在将命令和参数传递给 shell 解释器之前,如何让 gdb 解释这个变量?

例如,在 gdb 提示符中:

(gdb) set $my_arg = 2
(gdb) shell echo $my_arg

我希望它打印2在 上stdout,但实际上它确实打印了一个空行。

编辑:我使用的是 ndk-gdb,它不支持 python 脚本。

4

2 回答 2

13

使用新版本的 gdb,您可以使用“eval”:

(gdb) set $val = 2
(gdb) eval "shell echo %d", $val
2

如果您有旧版本的 gdb,那么您能做的最好的事情就是使用“设置日志记录”将内容写入文件,然后使用 sed 等 shell 实用程序将文件重写为您想要的形式。

于 2013-06-20T19:08:30.120 回答
6

更新此答案不适用于 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)
于 2013-06-20T14:34:34.587 回答