2012-05-18 117 views
3

我没有深入细节,我正在研究一个程序,它由几个独立的进程组成,所有进程都在嵌入式QNX RTOS上运行。他们没有亲子关系,他们都使用spawnlp(P_NOWAIT, ...)产生,他们都使用OS提供的IPC机制相互通信。在多个进程中使用GDB进行调试

当我使用GDB进行调试时,在我正在使用的进程中打断点时,所有线程都暂停,这非常棒。但有没有办法让它暂停执行我的其他进程?眼下发生的事情是所有其他进程继续道路行驶,而我的过程被暂停,因此所有的IPC队列得到充分等等,等等

由于提前,

HF

+0

我不知道他们是否会仍然与当前的gdb进程关联。 – ravi

回答

1

可以关联带有每个断点的GDB命令列表。所以,当你打的过程中一个断点,比如,你可以发送一个SIGTRAP处理B,应该把它扔到调试器:

(gdb) b main 
Breakpoint 1 at 0x804834a: file testA.c, line 40. 
(gdb) command 
Type commands for when breakpoint 1 is hit, one per line. 
End with a line saying just "end". 
>shell kill -s TRAP `pidof testB` 
>end 
(gdb) 

更多信息以Breakpoint Command Lists

+0

我认为可能会这样做,它可能不会完全停止其他进程,而是应该尽快阻止它们足够快以防止IPCt队列被填满 –