diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index fdabaca597d3aa5b2faa478d76daf86015d161b8..e55aff1d07e58e7b6454e6b0a623ae8e6fdb4bd4 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -432,7 +432,7 @@ void DebuggerEngine::handleCommand(int role, const QVariant &value)
             break;
 
         case RequestExecInterruptRole:
-            d->doInterruptInferior();
+            requestInterruptInferior();
             break;
 
         case RequestExecResetRole:
@@ -1412,6 +1412,11 @@ void DebuggerEngine::quitDebugger()
     shutdownInferior();
 }
 
+void DebuggerEngine::requestInterruptInferior()
+{
+    d->doInterruptInferior();
+}
+
 } // namespace Internal
 } // namespace Debugger
 
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index 592474476b6a4197ec84048e7c235c39024c8e67..1d4845b1692a02c1f5073cdaa5ff0d333b1a2a96 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -173,6 +173,8 @@ protected:
     virtual void continueInferior() {}
     virtual void interruptInferior() {}
 
+    virtual void requestInterruptInferior();
+
     virtual void executeRunToLine(const QString &fileName, int lineNumber)
         { Q_UNUSED(fileName); Q_UNUSED(lineNumber); }
     virtual void executeRunToFunction(const QString &functionName)
diff --git a/src/plugins/debugger/gdb/abstractgdbadapter.cpp b/src/plugins/debugger/gdb/abstractgdbadapter.cpp
index b3723f1005ed359f1f66110fd342e65cda844821..e663126ae363d9eec40e933cfa1cf9e6529c173f 100644
--- a/src/plugins/debugger/gdb/abstractgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/abstractgdbadapter.cpp
@@ -54,6 +54,7 @@ AbstractGdbAdapter::~AbstractGdbAdapter()
 
 //void AbstractGdbAdapter::runEngine()
 //{
+//    QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
 //}
 
 /*
diff --git a/src/plugins/debugger/gdb/attachgdbadapter.cpp b/src/plugins/debugger/gdb/attachgdbadapter.cpp
index 935f30e4962c79ee152451c17b170ebf4b95d290..ed4edc6b0e3ec5d63b3a654becfdc321c40e9876 100644
--- a/src/plugins/debugger/gdb/attachgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/attachgdbadapter.cpp
@@ -78,7 +78,6 @@ void AttachGdbAdapter::runEngine()
 {
     QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
     m_engine->notifyEngineRunAndInferiorStopOk();
-    m_engine->notifyInferiorRunRequested();
     m_engine->continueInferiorInternal();
     m_engine->showStatusMessage(tr("Attached to process %1.")
         .arg(m_engine->inferiorPid()));
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index d0a363d3934cc5733c9d236531cba800a3eb2a22..1ad8e5f77e3d29213fdc34fd5c62358082da12db 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -654,13 +654,13 @@ void GdbEngine::interruptInferior()
 
 void GdbEngine::interruptInferiorTemporarily()
 {
-    interruptInferior();
     foreach (const GdbCommand &cmd, m_commandsToRunOnTemporaryBreak) {
         if (cmd.flags & LosesChild) {
             notifyInferiorIll();
-            break;
+            return;
         }
     }
+    requestInterruptInferior();
 }
 
 void GdbEngine::maybeHandleInferiorPidChanged(const QString &pid0)
@@ -1798,9 +1798,10 @@ unsigned GdbEngine::debuggerCapabilities() const
 
 void GdbEngine::continueInferiorInternal()
 {
+    QTC_ASSERT(state() == InferiorStopOk, qDebug() << state());
+    notifyInferiorRunRequested();
+    showStatusMessage(tr("Running requested..."), 5000);
     QTC_ASSERT(state() == InferiorRunRequested, qDebug() << state());
-    //QTC_ASSERT(state() == InferiorStopOk || state() == InferiorSetupRequested,
-    //           qDebug() << state());
     postCommand("-exec-continue", RunRequest, CB(handleExecuteContinue));
 }
 
@@ -1815,9 +1816,7 @@ void GdbEngine::continueInferior()
     QTC_ASSERT(state() == InferiorStopOk, qDebug() << state());
     resetLocation();
     setTokenBarrier();
-    notifyInferiorRunRequested();
     continueInferiorInternal();
-    showStatusMessage(tr("Running requested..."), 5000);
 }
 
 void GdbEngine::executeStep()
@@ -1953,7 +1952,6 @@ void GdbEngine::executeRunToFunction(const QString &functionName)
     setTokenBarrier();
     postCommand("-break-insert -t " + functionName.toLatin1());
     showStatusMessage(tr("Run to function %1 requested...").arg(functionName), 5000);
-    notifyInferiorRunRequested();
     continueInferiorInternal();
     //postCommand("-exec-continue", handleExecuteRunToFunction);
 }
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
index fd1b564929fb38525860c607fc51fcc42fce3e44..abcd5622450ebe05bad885aad625ed4f72960478 100644
--- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
+++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp
@@ -225,8 +225,8 @@ void RemoteGdbServerAdapter::handleTargetRemote(const GdbResponse &record)
 
 void RemoteGdbServerAdapter::runEngine()
 {
+    QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
     m_engine->notifyEngineRunAndInferiorStopOk();
-    m_engine->notifyInferiorRunRequested();
     m_engine->continueInferiorInternal();
 }
 
diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
index c4863ebffa27f60cc7dabb37b45447452eb60a83..059f8f86fe08dc144a52abf5e01a8e61f3027427 100644
--- a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp
@@ -237,7 +237,7 @@ void TcfTrkGdbAdapter::handleTcfTrkRunControlModuleLoadContextSuspendedEvent(con
                 //    + QByteArray::number(m_session.codeseg));
                 m_engine->postCommand("symbol-file \"" + symbolFile + "\"");
             }
-            foreach(const QByteArray &s, Symbian::gdbStartupSequence())
+            foreach (const QByteArray &s, Symbian::gdbStartupSequence())
                 m_engine->postCommand(s);
             m_engine->postCommand("target remote " + gdbServerName().toLatin1(),
                                   CB(handleTargetRemote));
@@ -299,7 +299,7 @@ void TcfTrkGdbAdapter::tcftrkEvent(const TcfTrkEvent &e)
             const TcfTrkRunControlContextSuspendedEvent &se = static_cast<const TcfTrkRunControlContextSuspendedEvent &>(e);
             const unsigned threadId = RunControlContext::threadIdFromTcdfId(se.id());
             const QString reason = QString::fromUtf8(se.reasonID());
-            showMessage(QString::fromLatin1("Reset snapshot (Thread 0x%1 stopped: '%2')").
+            showMessage(_("Reset snapshot (Thread 0x%1 stopped: '%2')").
                         arg(threadId, 0, 16).arg(reason));
             // Stopped in a new thread: Add.
             m_snapshot.reset();
@@ -544,7 +544,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
         const uint signalNumber = cmd.mid(1).toUInt(&ok, 16);
         //TODO: Meaning of the message is not clear.
         sendGdbServerAck();
-        logMessage(QString::fromLatin1("Not implemented 'Continue with signal' %1: ").arg(signalNumber), LogWarning);
+        logMessage(_("Not implemented 'Continue with signal' %1: ").arg(signalNumber), LogWarning);
         sendGdbServerMessage("O" + QByteArray("Console output").toHex());
         sendGdbServerMessage("W81"); // "Process exited with result 1
         sendTrkContinue();
@@ -646,7 +646,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
             sendGdbServerMessage("E20", "Data length mismatch " + cmd);
             return;
         }
-        logMessage(QString::fromLatin1("Writing %1 bytes from 0x%2: %3").
+        logMessage(_("Writing %1 bytes from 0x%2: %3").
                    arg(addrLength.second).arg(addrLength.first, 0, 16).
                    arg(QString::fromAscii(data.toHex())));
         m_trkDevice->sendMemorySetCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleWriteMemory),
@@ -680,7 +680,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
         const QPair<uint, uint> regnumValue = parseGdbWriteRegisterWriteRequest(cmd);
         // FIXME: Assume all goes well.
         m_snapshot.setRegisterValue(m_session.tid, regnumValue.first, regnumValue.second);
-        logMessage(QString::fromLatin1("Setting register #%1 to 0x%2").arg(regnumValue.first).arg(regnumValue.second, 0, 16));
+        logMessage(_("Setting register #%1 to 0x%2").arg(regnumValue.first).arg(regnumValue.second, 0, 16));
         m_trkDevice->sendRegistersSetCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleWriteRegister),
                                              currentThreadContextId(), regnumValue.first, regnumValue.second,
                                              QVariant(regnumValue.first));
@@ -803,7 +803,7 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd)
 
     else if (cmd == "s" || cmd.startsWith("vCont;s")) {
         const uint pc = m_snapshot.registerValue(m_session.tid, RegisterPC);
-        logMessage(msgGdbPacket(QString::fromLatin1("Step range from 0x%1").
+        logMessage(msgGdbPacket(_("Step range from 0x%1").
                                 arg(pc, 0, 16)));
         sendGdbServerAck();
         m_running = true;
@@ -905,7 +905,7 @@ void TcfTrkGdbAdapter::gdbSetCurrentThread(const QByteArray &cmd, const char *wh
     const QByteArray id = cmd.mid(2);
     const int threadId = id == "-1" ? -1 : id.toInt(0, 16);
     const QByteArray message = QByteArray(why) + QByteArray::number(threadId);
-    logMessage(msgGdbPacket(QString::fromLatin1(message)));
+    logMessage(msgGdbPacket(_(message)));
     // Set thread for subsequent operations (`m', `M', `g', `G', et.al.).
     // for 'other operations.  0 - any thread
     //$Hg0#df
@@ -977,7 +977,7 @@ void TcfTrkGdbAdapter::startAdapter()
     connect(m_gdbServer, SIGNAL(newConnection()),
         this, SLOT(handleGdbConnection()));
 
-    logMessage(QString::fromLatin1("Connecting to TCF TRK on %1:%2")
+    logMessage(_("Connecting to TCF TRK on %1:%2")
                .arg(tcfTrkAddress).arg(tcfTrkPort));
     tcfTrkSocket->connectToHost(tcfTrkAddress, tcfTrkPort);
 }
@@ -985,9 +985,10 @@ void TcfTrkGdbAdapter::startAdapter()
 void TcfTrkGdbAdapter::setupInferior()
 {
     QTC_ASSERT(state() == InferiorSetupRequested, qDebug() << state());
-    m_trkDevice->sendProcessStartCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleCreateProcess),
-                                         m_remoteExecutable, m_uid, m_remoteArguments,
-                                         QString(), true);
+    m_trkDevice->sendProcessStartCommand(
+        TcfTrkCallback(this, &TcfTrkGdbAdapter::handleCreateProcess),
+        m_remoteExecutable, m_uid, m_remoteArguments,
+        QString(), true);
 }
 
 void TcfTrkGdbAdapter::addThread(unsigned id)
@@ -1009,7 +1010,7 @@ void TcfTrkGdbAdapter::handleCreateProcess(const TcfTrkCommandResult &result)
         qDebug() << "ProcessCreated: " << result.toString();
     if (!result) {
         const QString errorMessage = result.errorString();
-        logMessage(QString::fromLatin1("Failed to start process: %1").arg(errorMessage), LogError);
+        logMessage(_("Failed to start process: %1").arg(errorMessage), LogError);
         m_engine->notifyInferiorSetupFailed(result.errorString());
         return;
     }
@@ -1030,7 +1031,8 @@ void TcfTrkGdbAdapter::handleCreateProcess(const TcfTrkCommandResult &result)
 
 void TcfTrkGdbAdapter::runEngine()
 {
-    m_engine->notifyInferiorStopOk();
+    QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
+    m_engine->notifyEngineRunAndInferiorStopOk();
     // Trigger the initial "continue" manually.
     m_engine->continueInferiorInternal();
 }
@@ -1052,7 +1054,8 @@ void TcfTrkGdbAdapter::write(const QByteArray &data)
             data1.chop(1);
         bool ok;
         const uint addr = data1.toUInt(&ok, 0);
-        logMessage(QString::fromLatin1("Direct step (@#) 0x%1: not implemented").arg(addr, 0, 16), LogError);
+        logMessage(_("Direct step (@#) 0x%1: not implemented").arg(addr, 0, 16),
+            LogError);
         // directStep(addr);
         return;
     }
@@ -1115,7 +1118,8 @@ void TcfTrkGdbAdapter::handleWriteRegister(const TcfTrkCommandResult &result)
     if (result) {
         sendGdbServerMessage("OK");
     } else {
-        logMessage(QString::fromLatin1("ERROR writing register #%1: %2").arg(registerNumber).arg(result.errorString()), LogError);
+        logMessage(_("ERROR writing register #%1: %2")
+            .arg(registerNumber).arg(result.errorString()), LogError);
         sendGdbServerMessage("E01");
     }
 }
@@ -1353,7 +1357,7 @@ void TcfTrkGdbAdapter::sendTrkStepRange()
     uint to = m_snapshot.lineToAddress;
     const uint pc = m_snapshot.registerValue(m_session.tid, RegisterPC);
     if (from <= pc && pc <= to) {
-        const QString msg = QString::fromLatin1("Step in 0x%1 .. 0x%2 instead of 0x%3...").
+        const QString msg = _("Step in 0x%1 .. 0x%2 instead of 0x%3...").
                             arg(from, 0, 16).arg(to, 0, 16).arg(pc, 0, 16);
         showMessage(msg);
     } else {
@@ -1365,18 +1369,20 @@ void TcfTrkGdbAdapter::sendTrkStepRange()
           (m_snapshot.stepOver ? RM_STEP_OVER       : RM_STEP_INTO) :
           (m_snapshot.stepOver ? RM_STEP_OVER_RANGE : RM_STEP_INTO_RANGE);
 
-    logMessage(QString::fromLatin1("Stepping from 0x%1 to 0x%2 (current PC=0x%3), mode %4").
+    logMessage(_("Stepping from 0x%1 to 0x%2 (current PC=0x%3), mode %4").
                arg(from, 0, 16).arg(to, 0, 16).arg(pc).arg(int(mode)));
-    m_trkDevice->sendRunControlResumeCommand(TcfTrkCallback(this, &TcfTrkGdbAdapter::handleStep),
-                                             currentThreadContextId(),
-                                             mode, 1, from, to);
+    m_trkDevice->sendRunControlResumeCommand(
+        TcfTrkCallback(this, &TcfTrkGdbAdapter::handleStep),
+        currentThreadContextId(),
+        mode, 1, from, to);
 }
 
 void TcfTrkGdbAdapter::handleStep(const TcfTrkCommandResult &result)
 {
 
     if (!result) { // Try fallback with Continue.
-        logMessage(QString::fromLatin1("Error while stepping: %1 (fallback to 'continue')").arg(result.errorString()), LogWarning);
+        logMessage(_("Error while stepping: %1 (fallback to 'continue')").
+            arg(result.errorString()), LogWarning);
         sendTrkContinue();
         // Doing nothing as below does not work as gdb seems to insist on
         // making some progress through a 'step'.
diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp
index 66fae71c6d7b986c1b52ad1a1fb79ee50f1e1901..a74f16b96e7b4247679512bd512346366153d987 100644
--- a/src/plugins/debugger/gdb/termgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/termgdbadapter.cpp
@@ -143,7 +143,6 @@ void TermGdbAdapter::runEngine()
 {
     QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
     m_engine->notifyEngineRunAndInferiorStopOk();
-    m_engine->notifyInferiorRunRequested();
     m_engine->continueInferiorInternal();
 }
 
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index 3a9bf11f57e79699d1062d5113952de93a3cf2bc..d332e429d379bc313283a4fce129ed142fa1cada 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -1615,6 +1615,8 @@ void TrkGdbAdapter::handleTargetRemote(const GdbResponse &record)
 
 void TrkGdbAdapter::runEngine()
 {
+    QTC_ASSERT(state() == EngineRunRequested, qDebug() << state());
+    m_engine->notifyEngineRunAndInferiorStopOk();
     m_engine->continueInferiorInternal();
 }