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(),