在多个进程上使用GDB进行调试

在多个进程上使用GDB进行调试,gdb,qnx-neutrino,multiple-processes,Gdb,Qnx Neutrino,Multiple Processes,我正在编写一个程序,该程序由几个独立的进程组成,所有进程都运行在嵌入式QNX RTO上,没有太多细节。它们没有父子关系,它们都是使用spawnlp(P_NOWAIT,…)生成的,并且它们都使用操作系统提供的IPC机制相互通信 当我使用GDB进行调试时,我在工作的过程中遇到了一个断点,我的所有线程都会暂停,这很好。但有没有办法让它暂停执行我的其他进程?现在发生的事情是,当我的进程暂停时,所有其他进程继续运行,因此所有IPC队列都满了,等等 提前感谢, HF您可以将GDB命令列表与每个断点相关联。因

我正在编写一个程序,该程序由几个独立的进程组成,所有进程都运行在嵌入式QNX RTO上,没有太多细节。它们没有父子关系,它们都是使用
spawnlp(P_NOWAIT,…)
生成的,并且它们都使用操作系统提供的IPC机制相互通信

当我使用GDB进行调试时,我在工作的过程中遇到了一个断点,我的所有线程都会暂停,这很好。但有没有办法让它暂停执行我的其他进程?现在发生的事情是,当我的进程暂停时,所有其他进程继续运行,因此所有IPC队列都满了,等等

提前感谢,


HF

您可以将GDB命令列表与每个断点相关联。因此,当您在进程a中遇到断点时,例如,您可以向进程B发送一个SIGTRAP,该进程应将其放入调试器中:

(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) 

更多信息参见

我不确定它们是否仍然与当前的gdb流程相关。我认为这可能会做到,它可能不会在达到断点时停止其他流程,但应该足够快地停止它们,以防止IPCt队列填满