タイトルと同じです。gdbで複数のプロセスやスレッドを同時にデバッグすることはできますか?つまり、ブレークポイントに達するとそれらをすべて停止することはできますか?
他のスレッド/プロセスが最高速度で実行を続けると、プロセスまたはスレッドの段階的なデバッグが不便になることがあります。
2つのプロセスが両方ともbashとは独立して起動されていて、もう一方の子ではない場合に、この方法でデバッグすることができた場合のボーナス。
タイトルと同じです。gdbで複数のプロセスやスレッドを同時にデバッグすることはできますか?つまり、ブレークポイントに達するとそれらをすべて停止することはできますか?
他のスレッド/プロセスが最高速度で実行を続けると、プロセスまたはスレッドの段階的なデバッグが不便になることがあります。
2つのプロセスが両方ともbashとは独立して起動されていて、もう一方の子ではない場合に、この方法でデバッグすることができた場合のボーナス。
スレッドの場合、はすでにである必要があります。
デフォルトで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
)に接続したり、別のプロセスに接続したりすることができます。彼らがどこから始まったかはそれほど重要ではありません。
https://stackoverflow.com/q/856488/72178の重複はありますか? – ks1322