我想从gdb执行一个shell命令,这个shell命令需要一个参数,这个参数是一个gdb变量。在将命令和参数传递给 shell 解释器之前,如何让 gdb 解释这个变量?
例如,在 gdb 提示符中:
(gdb) set $my_arg = 2
(gdb) shell echo $my_arg
我希望它打印2
在 上stdout
,但实际上它确实打印了一个空行。
编辑:我使用的是 ndk-gdb,它不支持 python 脚本。
我想从gdb执行一个shell命令,这个shell命令需要一个参数,这个参数是一个gdb变量。在将命令和参数传递给 shell 解释器之前,如何让 gdb 解释这个变量?
例如,在 gdb 提示符中:
(gdb) set $my_arg = 2
(gdb) shell echo $my_arg
我希望它打印2
在 上stdout
,但实际上它确实打印了一个空行。
编辑:我使用的是 ndk-gdb,它不支持 python 脚本。
使用新版本的 gdb,您可以使用“eval”:
(gdb) set $val = 2
(gdb) eval "shell echo %d", $val
2
如果您有旧版本的 gdb,那么您能做的最好的事情就是使用“设置日志记录”将内容写入文件,然后使用 sed 等 shell 实用程序将文件重写为您想要的形式。
更新此答案不适用于 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)