forked from qt-creator/qt-creator
Debugger: reset thread after failed function call
Change-Id: If390d681ec33aa7c03b7e6cc62c45f2950186998 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -505,9 +505,13 @@ bool ExtensionContext::call(const std::string &functionCall,
|
||||
const bool crashed = output->find(L"This exception may be expected and handled.") != std::string::npos;
|
||||
if (crashed && !callFlags) {
|
||||
m_stopReason.clear();
|
||||
hr = m_control->Execute(DEBUG_OUTCTL_ALL_CLIENTS, goCommandForCall(CallWithExceptionsNotHandled), DEBUG_EXECUTE_ECHO);
|
||||
m_control->WaitForEvent(0, INFINITE);
|
||||
*errorMessage = "A crash occurred while calling: " + functionCall;
|
||||
hr = m_control->Execute(DEBUG_OUTCTL_ALL_CLIENTS, goCommandForCall(CallWithExceptionsNotHandled), DEBUG_EXECUTE_ECHO);
|
||||
startRecordingOutput();
|
||||
m_control->WaitForEvent(0, INFINITE);
|
||||
// if we encounter a second chance exception while calling reset the call stack
|
||||
if (stopRecordingOutput().find(L"!!! second chance !!!") != std::string::npos)
|
||||
m_control->Execute(DEBUG_OUTCTL_IGNORE, ".call /C", DEBUG_EXECUTE_ECHO);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user