ブレークポイントにないときに GDB が停止して SIGTRAP を表示することが多いプログラムをデバッグしようとしています。動的ライブラリやその他の通常のものをロードするときに発生します。ブレークポイントが最終的にヒットする前に、これらが 1,000 回ほど発生しているため、これらの無関係な SIGTRAP をすべて手動で「続行」することは不可能です。しかし、コマンドを使用するhandle SIGTRAP nostop noprint
と、GDB はブレークポイントで停止しません。
どの SIGTRAP が停止に適していて、どの SIGTRAP が停止に適していないかを理解できるように、GDB を教育する方法が必要なようです。出力が非常に確実に異なるため、明らかに GDB はブレークポイントにあるかどうかを認識しています。ブレークポイントでは、「ブレークポイント」と表示され、ブレークポイント番号が表示されますが、他の SIGTRAP では、「SIGTRAP」と表示されます。したがって、SIGTRAP に関するメッセージを出力する代わりに、GDB が自分自身に「うわー、これは SIGTRAP であり、ここにはブレークポイントがありません。見てください。停止して出力しようとしています。デバッグ セッションを完全に台無しにする無用な SIGTRAP メッセージ! 静かに続けてみませんか?" 誰かがこれを行う方法を持っているかどうか教えてください。