2017-06-09 15 views
0

タイトルと同じです。gdbで複数のプロセスやスレッドを同時にデバッグすることはできますか?つまり、ブレークポイントに達するとそれらをすべて停止することはできますか?

他のスレッド/プロセスが最高速度で実行を続けると、プロセスまたはスレッドの段階的なデバッグが不便になることがあります。

2つのプロセスが両方ともbashとは独立して起動されていて、もう一方の子ではない場合に、この方法でデバッグすることができた場合のボーナス。

+0

https://stackoverflow.com/q/856488/72178の重複はありますか? – ks1322

答えて

0

スレッドの場合、はすでにである必要があります。

デフォルトでGDBは、オールストップモードでは下位を実行します。このモードでは、GDBは1つのスレッドが停止すると(シグナルを受信したため、またはブレークポイントに遭遇したため)、すべてのスレッドを停止します。 this answerも参照してください。

GDBでも複数の下位レベルがサポートされていますが、GDBに組み込まれている「すべてのスレッドを停止する」と同等の「すべての下位プロセスを停止する」メカニズムはないと思います。

しかし、あなたは自明のコマンドを使用してブレークポイントに接続することを達成することができます:

(gdb) break foo.c:1234 
(gdb) commands 1 
    shell kill -STOP 4321 # stop the other inferior 
end 

ボーナスを、彼らは両方のbash

から独立して開始されたとき、このように二つのプロセスをデバッグすることが可能であった場合

確かに、両方のプロセスを現在のGDB((gdb) help attach)に接続したり、別のプロセスに接続したりすることができます。彼らがどこから始まったかはそれほど重要ではありません。

関連する問題