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

时间:2013-06-20 13:32:20

标签: bash shell android-ndk gdb ndk-gdb

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

例如,在gdb提示符中:

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

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

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

2 个答案:

答案 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)