n61*_*007 2 c++ debugging gdb detect
我有一个 C++ 应用程序,让我们调用dummy1,我想在 Linux(ubuntu 12.04)中的 cgdb(gdb 的 curl 接口)中调试它。调试需要与我有来源的控制器进程同步。
编辑控制器通过 http 连接和通信并控制 dummy1。我想在某个函数中打破 dummy1 并按我喜欢的步骤进行。发生这种情况时,我希望通知控制器。然后控制器应该改变它的状态,直到它被通知我继续 dummy1。同时,它不应试图控制或发起与 dummy1 的通信。
我的问题是如何在/通知控制器 中检测/通知我的dummy1进程当前是否正在调试(中断)?
有几种可能的解决方案:
dummy1进程的PID ),并查看TracerPid字段。如果非零,dummy1则正在调试,控制器应避免尝试控制。请注意,这会回答“正在调试 dummy1”,而不是当前是否已停止 dummy1。为了允许控制器再次控制,您必须将 GDB 与 dummy1 分离。
较新版本的 GDB 支持一次调试多个进程。但是,您可能会发现这很令人困惑。