diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index 77c4ac93593502ef89957506a2a87e173dedc7bd..b129beb1abeb52fe3d11a29346283c78c0caaa8d 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -28,6 +28,7 @@
 **************************************************************************/
 
 #include "trkgdbadapter.h"
+#include "launcher.h"
 #include "trkoptions.h"
 #include "trkoptionspage.h"
 #include "s60debuggerbluetoothstarter.h"
@@ -991,16 +992,18 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result)
             logMessage(logMsg);
             break;
         }
-        case 0x90: { // Notified Stopped
+        case TrkNotifyStopped: { // Notified Stopped	   
             // 90 01   78 6a 40 40   00 00 07 23   00 00 07 24  00 00
             debugMessage(_("RESET SNAPSHOT (NOTIFY STOPPED)"));
             m_snapshot.reset();
-            const char *data = result.data.data();
-            const uint addr = extractInt(data);
-            const uint pid = extractInt(data + 4);
-            const uint tid = extractInt(data + 8);
-            logMessage(prefix + _("NOTE: PID %1/TID %2 "
-                "STOPPED at 0x%3").arg(pid).arg(tid).arg(addr, 0, 16));
+            QString reason;
+            uint addr;
+            uint pid;
+            uint tid;
+            trk::Launcher::parseNotifyStopped(result.data, &pid, &tid, &addr, &reason);
+            const QString msg = trk::Launcher::msgStopped(pid, tid, addr, reason);
+            logMessage(prefix + msg);
+            m_engine->manager()->showDebuggerOutput(LogMisc, msg);
             sendTrkAck(result.token);
             if (addr) {
                 // Todo: Do not send off GdbMessages if a synced gdb
@@ -1019,7 +1022,7 @@ void TrkGdbAdapter::handleTrkResult(const TrkResult &result)
                 trkReadRegistersMessage());
             break;
         }
-        case 0x91: { // Notify Exception (obsolete)
+        case TrkNotifyException: { // Notify Exception (obsolete)
             debugMessage(_("RESET SNAPSHOT (NOTIFY EXCEPTION)"));
             m_snapshot.reset();
             logMessage(prefix + "NOTE: EXCEPTION  " + str);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index 94dfb99aec6c85530336162c0a7df0bd8924e4ef..e230758e15391971d7a73e94dff96b68ec38babd 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -602,6 +602,8 @@ void S60DeviceRunControlBase::signsisProcessFinished()
     connect(m_launcher, SIGNAL(canNotInstall(QString,QString)), this, SLOT(printInstallFailed(QString,QString)));
     connect(m_launcher, SIGNAL(copyProgress(int)), this, SLOT(printCopyProgress(int)));
     connect(m_launcher, SIGNAL(stateChanged(int)), this, SLOT(slotLauncherStateChanged(int)));
+    connect(m_launcher, SIGNAL(processStopped(uint,uint,uint,QString)),
+            this, SLOT(processStopped(uint,uint,uint,QString)));
 
     //TODO sisx destination and file path user definable
     m_launcher->setTrkServerName(m_serialPortName);
@@ -688,6 +690,12 @@ void S60DeviceRunControlBase::launcherFinished()
     handleLauncherFinished();
 }
 
+void S60DeviceRunControlBase::processStopped(uint pc, uint pid, uint tid, const QString& reason)
+{
+    emit addToOutputWindow(this, trk::Launcher::msgStopped(pid, tid, pc, reason));
+    m_launcher->terminate();
+}
+
 QMessageBox *S60DeviceRunControlBase::createTrkWaitingMessageBox(const QString &port, QWidget *parent)
 {
     const QString title  = QCoreApplication::translate("Qt4ProjectManager::Internal::S60DeviceRunControlBase",
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
index 04616bf109a8a499a5ab5be574266a5bbba4048e..52fa3ed20003d716bf28d2d29720b71fa494cd9f 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
@@ -155,6 +155,7 @@ protected slots:
     void printApplicationOutput(const QString &output);
 
 private slots:
+    void processStopped(uint pc, uint pid, uint tid, const QString& reason);
     void readStandardError();
     void readStandardOutput();
     void makesisProcessFailed();
diff --git a/tests/manual/trklauncher/main.cpp b/tests/manual/trklauncher/main.cpp
index 9938f847931f813be7dfdbe921a001bf16e96ecf..fc0c589009b8cd4b9e646e26973c1cd2f85defd5 100644
--- a/tests/manual/trklauncher/main.cpp
+++ b/tests/manual/trklauncher/main.cpp
@@ -136,6 +136,8 @@ int main(int argc, char *argv[])
         return 1;
     }
     QObject::connect(launcher.data(), SIGNAL(finished()), &app, SLOT(quit()));
+    QObject::connect(launcher.data(), SIGNAL(processStopped(uint,uint,uint,QString)),
+                     launcher.data(), SLOT(terminate()));
     // BLuetooth: Open with prompt
     QString errorMessage;
     if (bluetooth && !trk::ConsoleBluetoothStarter::startBluetooth(launcher->trkDevice(),