从Python调用和控制GDB

28 投票
2 回答
22560 浏览
提问于 2025-04-16 02:47

我正在运行一个Python图形界面应用程序。我想从这个应用程序中调用和控制GDB,比如加载一个可执行文件、设置断点等等。我发现GDB有一个命令行界面,可以通过发送字符串给GDB进程来使用,但我想用Python的方式来做。有没有一个叫gdb.py的东西?我看到“archer”分支里有类似“import gdb”的内容,但在Ubuntu的默认Python安装中不起作用。我该从哪里获取这个模块,或者有没有其他方法可以通过Python控制GDB?

2 个回答

9

pygdbmi 是你需要的工具。

通过它,我可以用Python重置一个嵌入式设备,方法如下:

from pygdbmi.gdbcontroller import GdbController
if __name__ == '__main__':
    gdbmi = GdbController()
    response = gdbmi.write('b main')
    response = gdbmi.write('target remote localhost:2331')
    response = gdbmi.write('mon reset 0')
    response = gdbmi.write('c')

gdbgui 提供了一个更酷的例子。

21

是的,你可以通过Python来控制GDB。关于Python的相关文档可以在这里找到:http://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python

如果你想看看一些脚本的例子,可以参考这个链接:http://tromey.com/blog/?p=548

撰写回答