4

詳細には触れませんが、私はすべて組み込み QNX RTOS で実行されるいくつかの個別のプロセスで構成されるプログラムに取り組んでいます。親子関係はありません。これらはすべて を使用spawnlp(P_NOWAIT, ...)して生成され、OS が提供する IPC メカニズムを使用して相互に通信します。

GDB を使用してデバッグしているときに、作業中のプロセスでブレークポイントに到達すると、すべてのスレッドが一時停止されます。これはすばらしいことです。しかし、他のプロセスの実行を一時停止する方法はありますか? 現在、私のプロセスが一時停止している間、他のすべてのプロセスが追跡を続けているため、すべての IPC キューがいっぱいになるなどです。

前もって感謝します、

HF

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 に答える