Show assert stack if in the test if possible
Make wxAppTraitsBase::GetAssertStackTrace() and reuse it in the assert handler defined in the test to show more information about the asserts, especially those failing in worker threads, if possible.
This commit is contained in:
@@ -164,11 +164,13 @@ public:
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
#if wxUSE_STACKWALKER
|
||||
// utility function: returns the stack frame as a plain wxString
|
||||
// Helper function mostly useful for derived classes ShowAssertDialog()
|
||||
// implementation.
|
||||
//
|
||||
// Returns the stack frame as a plain (and possibly empty) wxString.
|
||||
virtual wxString GetAssertStackTrace();
|
||||
#endif
|
||||
#endif // wxUSE_STACKWALKER
|
||||
|
||||
private:
|
||||
static wxSocketManager *ms_manager;
|
||||
|
@@ -156,5 +156,17 @@ public:
|
||||
@return @true if the message box was shown or @false otherwise.
|
||||
*/
|
||||
virtual bool SafeMessageBox(const wxString& text, const wxString& title) = 0;
|
||||
|
||||
/**
|
||||
Helper function mostly useful for derived classes ShowAssertDialog()
|
||||
implementation.
|
||||
|
||||
Returns the stack frame as a plain (and possibly empty) wxString.
|
||||
|
||||
This function is only available when @c wxUSE_STACKWALKER is 1.
|
||||
|
||||
@since 3.1.5
|
||||
*/
|
||||
virtual wxString GetAssertStackTrace();
|
||||
};
|
||||
|
||||
|
@@ -164,6 +164,12 @@ static void TestAssertHandler(const wxString& file,
|
||||
throw TestAssertFailure(file, line, func, cond, msg);
|
||||
}
|
||||
|
||||
#if wxUSE_STACKWALKER
|
||||
const wxString& stackTrace = wxApp::GetValidTraits().GetAssertStackTrace();
|
||||
if ( !stackTrace.empty() )
|
||||
abortReason << wxASCII_STR("\n\nAssert call stack:\n") << stackTrace;
|
||||
#endif // wxUSE_STACKWALKER
|
||||
|
||||
wxFputs(abortReason, stderr);
|
||||
fflush(stderr);
|
||||
_exit(-1);
|
||||
|
Reference in New Issue
Block a user