如何从PythonGDB(GDB 7.1)中的gdb.execute获取输出?

Uhl*_*hlo 6 python linux gdb dump

我目前正在编写Python GDB脚本.问题是它必须与GDB 7.1兼容.所以我首先编写了GDB 7.3.1的脚本,并使用以下函数来接收gdb命令(GDB 7.3.1)的输出:

myvar = gdb.execute("info target", False, True)
Run Code Online (Sandbox Code Playgroud)

这个函数的最后一个参数是它应该将结果作为字符串返回(这非常有意义;为什么我会执行这样的命令;))

在GDB版本7.1中虽然似乎最后一个参数不可用,因此这一行(GDB 7.1):

myvar = gdb.execute("info target", False)
Run Code Online (Sandbox Code Playgroud)

回报None.

有没有机会检索此命令的输出?我已经尝试将我的python脚本的标准输出重定向到一个文件,然后加载这个文件,但显然我的python脚本的标准输入和输出被gdb环境覆盖,因此gdb.execute命令的输出不会被写入到我的档案.

我现在唯一能想到的就是用一个bash脚本包装我的脚本,该脚本首先使用python脚本打开gdb,该脚本执行各种命令,然后将其传输到文件中.然后再次打开gdb但是使用另一个加载文件的python脚本,解析它然后根据文件的输入执行其他命令,依此类推.但这是我能想到的最丑陋的解决方案.

那么有没有办法在GDB 7.1中接收gdb.execute的输出?

Emp*_*ian 5

那么有没有办法在GDB 7.1中接收gdb.execute的输出?

没有.

您最好的选择是安排GDB-7.3.由于GDB通常不使用共享库(超出libc和libpython),因此您只需使用脚本复制gdb二进制文件即可.与您提出的替代方案相比,这将是更容易,更易于维护的解决方案.