如何检测进程是否正在调试 我有一个C++应用程序,让我们调用Dimy1,我想在CGDB中调试,这是一个GDB的CURL接口,在Linux(Ubuntu 12.04)中。 调试需要与控制器进程同步,我有它的源代码
编辑控制器通过http与dummy1进行连接、通信和控制。我想在某个函数和步骤中打破dummy1。发生这种情况时,我希望得到控制器的通知。然后控制器应该改变它的状态,直到它收到我继续dummy1的通知。同时,它不应试图控制dummy1,或发起与dummy1的通信如何检测进程是否正在调试 我有一个C++应用程序,让我们调用Dimy1,我想在CGDB中调试,这是一个GDB的CURL接口,在Linux(Ubuntu 12.04)中。 调试需要与控制器进程同步,我有它的源代码,c++,debugging,gdb,detect,C++,Debugging,Gdb,Detect,编辑控制器通过http与dummy1进行连接、通信和控制。我想在某个函数和步骤中打破dummy1。发生这种情况时,我希望得到控制器的通知。然后控制器应该改变它的状态,直到它收到我继续dummy1的通知。同时,它不应试图控制dummy1,或发起与dummy1的通信 我的问题是如何在/通知控制器中检测/如果我的dummy1进程当前正在调试(处于中断状态)?有几种可能的解决方案: 直接回答您的问题:您的控制器可以读取/proc/PID/status(其中PID是dummy1进程的PID),并查看Tr
我的问题是如何在/通知控制器中检测/如果我的dummy1进程当前正在调试(处于中断状态)?有几种可能的解决方案:
- 直接回答您的问题:您的控制器可以读取/proc/PID/status(其中PID是
进程的PID),并查看dummy1
字段。如果非零,TracerPid
正在调试,控制器应避免尝试控制dummy1
- 一种可能更好的方法是将GDB同时连接到dummy1和控制器。然后,您可以在您希望的任何时候停止控制器,单步执行dummy1,恢复其中一个或两个,等等
- 另一种选择是只运行两个GDB实例——一个用于控制控制器,另一个用于控制dummy1
xterm
前端进行显示的,因此我可以远程调试它。类似的事情(也许不是那么疯狂,但也许是第一部分)可能对你有用。