私たちのプロジェクトでは、ユニットテストにBoost.Testを使用しています。テストケース中に予期しない例外が発生したときにミニダンプを取得したいので、Google Breakpadを統合してミニダンプを作成し始めました。Boostテストの実行方法とミニダンプの作成方法
Boost.Testはユーザーテストからスローされた例外をすべて傍受しているようです。私はブーストテストケースがtry/catchで各関数をラップし、予期しない例外がスローされた場合単体テストが失敗するためです。これにより、Breakpad例外ハンドラがミニダンプを起動および書き込みできなくなります。
ユニットテストで予期しない例外をキャッチして失敗するだけでなく、代わりに、例外を未処理(または再スロー)にして、Breakpadまたは別の例外ハンドラをミニダンプを作成するようにトリガすることができます。
私はこの提案が好きですが、ミニダンプがキャッチブロックに書き込まれる頃には、ミニダンプに保存されている呼び出しスタックはスタックの最上部に 'ハンドラ'を表示します。ただし、「未処理の例外フィルタ」がトリガされ、ダンプが書き込まれると、問題のコールスタックが保持されます。 – mbradber
ブレークパッドはどのように例外ハンドラを設定しますか? – legalize
https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/windows_client_integration.md 私はそこにあるドキュメントに基づいてExceptionHandlerを作成しました。このブレークパッドでは、未処理の例外フィルタコールバックが設定され、未処理の例外によってミニダンプが正常に生成されます。しかし、私は 'WriteMinidump' APIをあなたが投稿したものと同様のcatchブロックで明示的に使用しています。 – mbradber