diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-01-21 15:46:33 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-01-21 15:46:33 +0100 |
commit | c516f350b21569611ffa034764808586c4e5f4e4 (patch) | |
tree | d66d62c0f58d97d98f3cac6d835c4cd040497445 /src/plugins/debugger/gdb/trkgdbadapter.cpp | |
parent | 53c672fb9853fef5a00285213084f02a4253e5f3 (diff) | |
download | qt-creator-c516f350b21569611ffa034764808586c4e5f4e4.tar.gz |
S60: Handle TrkNotifyStopped (crash) when running.
Extract error message string from Trk, print proper message
when application crashes in run mode and terminate launcher.
Use same message in Debugger for consistency.
Reviewed-by: Robert Loehning <robert.loehning@nokia.com>Reviewed-by: John Doe
Diffstat (limited to 'src/plugins/debugger/gdb/trkgdbadapter.cpp')
-rw-r--r-- | src/plugins/debugger/gdb/trkgdbadapter.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index 2093d1b2b4..8bb968c229 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); |