c++ - 命中 GDB 断点时自动调用应用程序代码中的函数

标签 c++ debugging gdb

我有多个不同的进程通过 IPC 进行通信,当使用 gdb 调试单个进程时,每当遇到断点时,我都会尝试向其他进程发送消息。有没有一种方法可以自动在遇到断点时自动调用一个函数/一段代码(NotifyAll())无需手动运行命令并调用gdb 控制台中的函数。

基本上,每当 gdb 调试器附加到这些进程之一时,我希望 gdb 知道它应该在遇到断点(应用程序范围)时调用 NotifyAll()

最佳答案

是的,这可以使用 gdb 中的 Python 脚本功能来完成。

特别是您想要向 gdb.events.stop 添加一个监听器来检查断点停止事件,然后调用您的函数。有可能(我不知道)您必须通过将事件发布到 gdb 事件循环来推迟函数的调用。

为了尽可能减少手动干预,请使用 gdb 脚本自动加载功能将此 Python 脚本与您的应用程序相关联。这将要求用户信任该脚本(阅读有关 add-auto-load-safe-path 的信息),仅此而已。

请注意,这样做可能会使试图调试您的应用程序的人感到困惑。例如,除非您的脚本格外小心,否则在 RPC 代码中设置断点会导致问题。

关于c++ - 命中 GDB 断点时自动调用应用程序代码中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42445377/

相关文章:

c++ - 在VTK下保存一个Mesh文件

C++ 内联函数会强制复制其参数吗?

c - 调试器关闭后的 MSP430 中断问题

eclipse - 如何在 Eclipse 中调试 R 代码

c - gdb 命令出错。 eclipse调试问题

c - GDB 挂起 - 不明白为什么

c - ret2libc攻击不会产生外壳

c++ - opengl 动态贝塞尔曲线有间隙 - glEvalCoord1f();

c - 如何检查已转储到文件的交叉编译结构?

c++ - 将文本文件读入矩阵