Unser Projekt verwendet Boost.Test für unsere Unit Tests. Wir möchten Minidumps erhalten, wenn unerwartete Ausnahmen auch in unseren Testfällen auftreten. Daher haben wir begonnen, Google Breakpad in die Minidumps zu integrieren.Wie Boost Test und Minidumps produzieren?
Offenbar fängt Boost.Test alle ausgelösten Ausnahmen von Benutzertests ab - ich nehme an, weil Boost-Testfälle jede Funktion mit einem try/catch umhüllen und der Komponententest einfach fehlschlägt, wenn eine unerwartete Ausnahme ausgelöst wird. Dies verhindert, dass der Breakpad-Ausnahme-Handler Minidumps auslöst und schreibt.
Ist es möglich, dass Boost.Test bei unerwarteten Ausnahmen in Komponententests nicht nur abfängt und fehlschlägt? Und lassen Sie stattdessen die Ausnahmen unbehandelt (oder erneut) gehen, damit Breakpad oder ein anderer Ausnahmebehandler ausgelöst werden kann, um einen Minidump zu schreiben?
Ich mag diesen Vorschlag, aber zu dem Zeitpunkt, in dem der Minidump in den Catch-Block geschrieben wird, zeigt der Callstack, der im Minidump gespeichert ist, nur "Handler" an der Spitze des Stapels. Wenn jedoch ein 'unhandled exception filter' ausgelöst wird und der Dump geschrieben wird, wird der störende Callstack beibehalten. – mbradber
Wie setzt Breakpad den Exception-Handler ein? – legalize
https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/windows_client_integration.md Ich habe einen ExceptionHandler basierend auf dem Dokument dort erstellt. Mit nur diesem setzt Breakpad seinen eigenen unbehandelten Ausnahmefilter-Callback, und unbehandelte Exceptions erzeugen Minidumps schön. Allerdings verwende ich die WriteMinidump-API explizit in einem catch-Block, der dem ähnlich ist, was Sie gepostet haben. – mbradber