C++ GDB:从被阻止的进程恢复控制
我有以下问题:当一个进程进入阻塞状态(即阻塞函数或池循环)时,我想恢复对gdb的控制 让我们用一个例子来说明它:我有一个进程A,它分叉进程B。B执行它的工作,然后在等待来自A的事件时陷入困境。我想将GDB切换到A,这样我可以单独运行它,直到事件生成。但是,我无法从B恢复对GDB的控制。当然,我可以在B中按住ctrl+C键生成一个SIGINT信号,然后切换到a,但当我返回B时,即使我处理pass SIGINT,B也会完成C++ GDB:从被阻止的进程恢复控制,c++,c,linux,gdb,C++,C,Linux,Gdb,我有以下问题:当一个进程进入阻塞状态(即阻塞函数或池循环)时,我想恢复对gdb的控制 让我们用一个例子来说明它:我有一个进程A,它分叉进程B。B执行它的工作,然后在等待来自A的事件时陷入困境。我想将GDB切换到A,这样我可以单独运行它,直到事件生成。但是,我无法从B恢复对GDB的控制。当然,我可以在B中按住ctrl+C键生成一个SIGINT信号,然后切换到a,但当我返回B时,即使我处理pass SIGINT,B也会完成 Log: Program received signal SIGINT, I
Log:
Program received signal SIGINT, Interrupt.
[Switching to Thread 0xb68feb40 (LWP 3177)]
0xb7fdeb0c in ?? ()
(gdb) handle SIGINT pass
SIGINT is used by the debugger.
Are you sure you want to change it? (y or n) y
Signal Stop Print Pass to program Description
SIGINT Yes Yes Yes Interrupt
(gdb) c
Continuing.
[Thread 0xb7abcb40 (LWP 3178) exited]
[Thread 0xb68feb40 (LWP 3177) exited]
Couldn't get registers: No such process.
(gdb) info inferiors
Num Description
* 2 <null>
1 process 3168
有没有一种方法可以在不终止进程的情况下恢复对GDB和切换进程的控制?如果a和B是独立的进程,为什么不运行GDB两次,一次连接到a,一次连接到B?您要找的是$detach后面跟着$attach吗?@dohashi a用一个fork创建了B。B需要一些由A负责的配置。我想我可以尝试使用给定的配置单独执行B,但这需要一些工作。我期待一个gdb机箱内解决方案,但你有一点,谢谢:如果你知道B的PID,你可以在它启动后附加到它。就像@Bhaskar建议的那样。哦!!多亏了这两个