【发布时间】:2012-02-20 00:40:31
【问题描述】:
是否可以通过调试程序控制 gdb?我希望有一个可以帮助解决这个问题的库,最好是使用gdb_sendcmd("bt") 之类的 API,但我可以忍受通过套接字连接到本地 gdb 之类的东西。
主要用例是以编程方式添加数据断点来监控下一次修改某个内存地址的时间。目标语言自然是 C;任何适用于它的东西都可以在 C++ 和 Objective-C 中重用。
Answer from Employed Russian 解决了我的直接问题,但我仍然很想知道如何从调试程序中以编程方式运行 GDB 命令。如果我可以简单地将代码添加到项目中,而不是为 GDB 编写额外的启动命令,这些命令会创建带有附加命令的断点,它可能会加快一些调试速度。
所以,如果有办法以编程方式运行命令,我仍然很乐意听到它;)
【问题讨论】:
-
我很确定这不可能。显然,您可以在 Python 中为 GDB 编写一些脚本,但是我不清楚如何自动调用它们,例如,当断点被命中时,以创建您要求的内存监视。
-
许多 CPU 架构都通过数据断点、数据观察点、导致中断的指令等对此类事物提供硬件支持。
-
@TJD 没错——但我想知道如何在 gdb 中以编程方式触发设置数据断点,或者如何运行任何其他命令。