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

时间:2012-05-18 17:55:40

标签: gdb qnx-neutrino multiple-processes

我没有详细介绍,我正在开发一个程序,该程序由几个独立的进程组成,所有进程都在嵌入式QNX RTOS上运行。它们没有父子关系,它们都是使用spawnlp(P_NOWAIT, ...)生成的,它们都是使用操作系统提供的IPC机制相互通信的。

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

提前致谢,

HF

1 个答案:

答案 0 :(得分:1)

您可以将GDB命令列表与每个断点关联起来。因此,当您在进程A中遇到断点时,您可以将SIGTRAP发送到进程B,进程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

的更多信息