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

标签 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)

这个函数的最后一个参数是它应该以字符串形式返回结果(这很有意义;否则我为什么要执行这样的命令;))

在 GDB 版本 7.1 中,虽然最后一个参数似乎是 isn't available因此这一行(GDB 7.1):

myvar = gdb.execute("info target", False)

返回

是否有机会检索此命令的输出?我已经尝试将我的 python 脚本的标准输出重定向到一个文件,然后加载这个文件,但显然我的 python 脚本的标准输入和输出是 overwritten by the gdb environment所以 gdb.execute 命令的输出不会写入我的文件。

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

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

最佳答案

So is there a way to receive the output of an gdb.execute in GDB 7.1?

没有。

最好的办法是安排 GDB-7.3 可用。由于 GDB 通常不使用共享库(除了 libc 和 libpython),你可以只用你的脚本复制 gdb 二进制文件。与您提出的替代方案相比,这将是更容易和更易于维护的解决方案。

关于python - 如何从 PythonGDB (GDB 7.1) 中的 gdb.execute 获取输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986589/

相关文章:

linux - 如何使用 "find"命令限制目录搜索?

c++ - 有没有办法在程序运行时更改 linux 上发布代码中的成员变量?

c++ - 具有多个 MySQL 源代码文件的 GDB

c - __libc_start_main 中的调试函数

python - 大数的质因数

php - 解决Python共享服务器安全问题

python - 如何在 python 中获取命令行参数(sys.argv)

c++ - 如何调试 armv5 上的堆损坏

linux - 如何将 shell 变量作为命令行参数传递给 shell 脚本

python - 如何将 django admin 更改为 rtl 样式