使用 GDB 对多个进程进行调试


在不赘述的情况下,

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

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

提前感谢,

高频

可以将 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) 

有关详细信息,请参阅断点命令列表

相关内容

  • 没有找到相关文章

最新更新