C++ GDB:从被阻止的进程恢复控制

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

我有以下问题:当一个进程进入阻塞状态(即阻塞函数或池循环)时,我想恢复对gdb的控制

让我们用一个例子来说明它:我有一个进程A,它分叉进程B。B执行它的工作,然后在等待来自A的事件时陷入困境。我想将GDB切换到A,这样我可以单独运行它,直到事件生成。但是,我无法从B恢复对GDB的控制。当然,我可以在B中按住ctrl+C键生成一个SIGINT信号,然后切换到a,但当我返回B时,即使我处理pass SIGINT,B也会完成

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建议的那样。哦!!多亏了这两个