将gdb变量传递给从gdb中执行的shell命令

car*_*ito 7 bash shell gdb android-ndk ndk-gdb

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

例如,在gdb提示符中:

(gdb) set $my_arg = 2
(gdb) shell echo $my_arg
Run Code Online (Sandbox Code Playgroud)

我想这对打印2stdout,但实际上它并打印一个空行.

编辑:我正在使用ndk-gdb,它不支持python脚本.

Tom*_*mey 9

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

(gdb) set $val = 2
(gdb) eval "shell echo %d", $val
2
Run Code Online (Sandbox Code Playgroud)

如果您有旧版本的gdb,那么您可以做的最好是使用"set logging"将内容写入文件,然后使用shell等实用程序将文件重写为您想要的表单.


小智 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)
Run Code Online (Sandbox Code Playgroud)