プログラムで失敗したアサートをキャプチャしようとしています。カスタム関数やマクロではなく、assert()を直接呼び出すライブラリを使用しています。このライブラリ内で、現在、いくつかの移植関連のバグを追跡しようとしています。関連するすべてのものは、g ++のデバッグシンボルでコンパイルされています。
私が見つけた最良の解決策は、アサートのfile:行で、アサート式の条件を壊すことです。これにより、失敗する前にアサートで停止できますが、恐ろしい解決策です。失敗する可能性のあるアサートごとに特別な設定が必要であり、私のIDEでは機能せず、一般にあまりにも多くの労力を要します。
anyでブレークアサートするには、gdbとgccを使用して、呼び出しスタックとスコープの範囲内の変数を調べることができる方法でアサートに失敗しましたアサート呼び出し?
ソリューションでアサートの失敗を破棄して実行を継続できる場合はさらに良いでしょう。
abort()
にブレークポイントを設定するのが最善のようです。
break abort
gdbのCLI。
上記の提案がうまくいかない場合は、__ assert_fail関数を中断してみてください。
break __assert_fail
名前はおそらく実装に依存していますが、プラットフォームでのアサートマクロの定義を見れば簡単にわかります。これにより、SIGABRTの前に中断できます。