在脚本化的gdb会话中,我想使用monitor <cmd>
,其中cmd应包含符号的地址。例如:
monitor foobar &myVariable
应该成为:
monitor foobar 0x00004711
因为远程端无法评估表达式。无论我尝试什么,都会发送字符串“&amp; myVariable”而不是地址。
我玩了便利变量和东西,但这是我找到的唯一解决方法:
# write the command into a file and execute this file
# didn't find a direct way to include the address into the monitor command
set logging overwrite on
set logging on command.tmp
printf "monitor foobar 0x%08x\n", &myVariable
set logging off
source command.tmp
有任何想法以更优雅的方式解决这个问题吗?
答案 0 :(得分:1)
执行此操作的最简单方法是使用gdb eval
命令,该命令是为此目的而引入的。它有点像printf
:
(gdb) eval "monitor foobar %p", &myVariable
(我实际上没有尝试过,所以要小心。)
如果你的gdb没有eval
,那么它就是旧的一面。我建议升级。
如果您无法升级,那么您也可以使用Python编写脚本。
如果你的gdb没有Python,那么它要么很旧(升级!),要么在没有Python支持的情况下编译(重新编译!)。
如果你无法获得这些功能中的任何一个,那么我恐怕会写出一个脚本并source
它&#34;方法就是剩下的。