diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index 2093d1b2b4ec11cbfa4ba03dbff1ed6aca2d7a7d..8bb968c229e18e723ac5166133f1958bd9d3740b 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" @@ -1054,16 +1055,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 @@ -1082,7 +1085,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 52756861a6346f51008e5b75126d41b8cef91cde..075a55d6377e036f7f7cdba3584d81eb7a3b4b1d 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp @@ -669,6 +669,8 @@ void S60DeviceRunControlBase::startDeployment() connect(m_launcher, SIGNAL(installingFinished()), this, SLOT(printInstallingFinished())); 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); @@ -775,6 +777,12 @@ void S60DeviceRunControlBase::reportDeployFinished() } } +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 1dd9228488af4fc77cea6311da8ecc7c2fcc8675..26b7133862e2909b3b8538349c34c3f38f1c385c 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h @@ -169,6 +169,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 f35c49b93112aa39c08c0dbb01969ea298d48014..50a15f45f217279aeaf4eae47e46663a97c5c2ca 100644 --- a/tests/manual/trklauncher/main.cpp +++ b/tests/manual/trklauncher/main.cpp @@ -147,6 +147,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(),