4

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

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

提前致谢,

高频

4

1 回答 1

1

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

断点命令列表中的更多信息

于 2013-03-09T07:15:41.027 回答