OSDN Git Service

Debugger: Stop in case of gdb crash in InferiorStop.
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>
Tue, 16 Nov 2010 11:38:50 +0000 (12:38 +0100)
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>
Tue, 16 Nov 2010 11:39:24 +0000 (12:39 +0100)
Reviewed-by: hjk
Task-number: QTCREATORBUG-3099

src/plugins/debugger/gdb/gdbengine.cpp

index 355b04a..5b071ce 100644 (file)
@@ -4300,6 +4300,9 @@ void GdbEngine::handleGdbError(QProcess::ProcessError error)
 
 void GdbEngine::handleGdbFinished(int code, QProcess::ExitStatus type)
 {
+    if (m_commandTimer && m_commandTimer->isActive())
+        m_commandTimer->stop();
+
     //qDebug() << "GDB PROCESS FINISHED";
     showMessage(_("GDB PROCESS FINISHED, status %1, code %2").arg(type).arg(code));
 /*
@@ -4314,20 +4317,25 @@ void GdbEngine::handleGdbFinished(int code, QProcess::ExitStatus type)
     }
     initializeVariables();
 */
-    if (state() == EngineShutdownRequested) {
+    switch (state()) {
+    case EngineShutdownRequested:
         notifyEngineShutdownOk();
-    } else if (state() == InferiorRunOk) {
+        break;
+    case InferiorRunOk:
         // This could either be a real gdb 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 gdb process exited somewhat unexpectedly."));
         notifyEngineSpontaneousShutdown();
-    } else {
-        QString msg = tr("The gdb process exited unexpectedly (%1).")
-          .arg((type == QProcess::CrashExit)
-              ? tr("crashed") : tr("code %1").arg(code));
+        break;
+    default: {
+        notifyEngineIll(); // Initiate shutdown sequence
+        const QString msg = type == QProcess::CrashExit ?
+                    tr("The gdb process crashed.") :
+                    tr("The gdb process exited unexpectedly (code %1)").arg(code);
         showMessageBox(QMessageBox::Critical, tr("Unexpected Gdb Exit"), msg);
-        notifyEngineSpontaneousShutdown();
+    }
+        break;
     }
 }