forked from qt-creator/qt-creator
Debugger: Merge GDB/LLDB process error handling
This also removes some of the "illegal" state transitions, partially addressing QTCREATORBUG-14089. Change-Id: I817d87a0b5e0a40285bc9b0880fef5bceaee3f16 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -1178,6 +1178,38 @@ void DebuggerEngine::notifyInferiorExited()
|
||||
d->queueShutdownEngine();
|
||||
}
|
||||
|
||||
void DebuggerEngine::notifyDebuggerProcessFinished(int exitCode,
|
||||
QProcess::ExitStatus exitStatus, const QString &backendName)
|
||||
{
|
||||
showMessage(_("%1 PROCESS FINISHED, status %2, exit code %3")
|
||||
.arg(backendName).arg(exitStatus).arg(exitCode));
|
||||
|
||||
switch (state()) {
|
||||
case DebuggerFinished:
|
||||
// Nothing to do.
|
||||
break;
|
||||
case EngineShutdownRequested:
|
||||
notifyEngineShutdownOk();
|
||||
break;
|
||||
case InferiorRunOk:
|
||||
// This could either be a real gdb/lldb crash or a quickly exited inferior
|
||||
// in the terminal adapter. In this case the stub proc will die soon,
|
||||
// too, so there's no need to act here.
|
||||
showMessage(_("The %1 process exited somewhat unexpectedly.").arg(backendName));
|
||||
notifyEngineSpontaneousShutdown();
|
||||
break;
|
||||
default: {
|
||||
notifyEngineIll(); // Initiate shutdown sequence
|
||||
const QString msg = exitStatus == QProcess::CrashExit ?
|
||||
tr("The %1 process terminated.") :
|
||||
tr("The %2 process terminated unexpectedly (exitCode %1)").arg(exitCode);
|
||||
AsynchronousMessageBox::critical(tr("Unexpected %1 Exit").arg(backendName),
|
||||
msg.arg(backendName));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DebuggerEngine::slaveEngineStateChanged(DebuggerEngine *slaveEngine,
|
||||
DebuggerState state)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user