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)
我想这对打印2的stdout,但实际上它并打印一个空行.
编辑:我正在使用ndk-gdb,它不支持python脚本.
使用新版本的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)