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