我有多个不同的进程通过IPC进行通信,当使用gdb调试单个进程时,每当遇到断点时,我都会尝试向其他进程发送消息。有没有办法自动调用一个函数/一段代码(NotifyAll())每当一个断点被点击没有手动运行commands
并调用该函数gdb控制台。
基本上,每当gdb调试器附加到其中一个进程时,我希望gdb知道每当遇到断点(应用程序范围)时它应该调用NotifyAll()。
答案 0 :(得分:0)
是的,这可以使用gdb中的Python脚本功能来完成。
特别要添加一个监听器来gdb.events.stop
检查断点停止事件,然后调用你的函数。可能(我不知道),您必须通过向gdb事件循环发布事件来推迟调用函数。
要使用最少的手动干预来完成此工作,请使用gdb脚本自动加载功能将此Python脚本与您的应用程序相关联。这将要求用户信任该脚本(阅读add-auto-load-safe-path
),但这都是。
请注意,执行此类操作可能会让尝试调试应用程序的人感到困惑。例如,在RPC代码中设置断点将导致问题,除非您的脚本需要格外小心。