diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 7c1909addc3fcee270cd9fcfb5e60138dc1c4197..466c6f62766da67eb7aae7d38ad06d2faae81bf8 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1563,6 +1563,8 @@ void GdbEngine::startDebugger(const QSharedPointer<DebuggerStartParameters> &sp)
 
 void GdbEngine::startDebugger2()
 {
+    qDebug() << "STARTUP, PHASE 2";
+    debugMessage(_("STARTUP, PHASE 2"));
 #if 0
     if (!m_gdbProc->waitForStarted()) {
         QMessageBox::critical(q->mainWindow(), tr("Debugger Startup Failure"),
@@ -1726,11 +1728,16 @@ void GdbEngine::handleStart(const GdbResultRecord &response, const QVariant &)
         QString msg = _(response.data.findChild("consolestreamoutput").data());
         QRegExp needle(_("\\bEntry point: (0x[0-9a-f]+)\\b"));
         if (needle.indexIn(msg) != -1) {
-            //debugMessage(_("STREAM: ") + msg + " " + needle.cap(1));
-            postCommand(_("tbreak *") + needle.cap(1));
-            m_waitingForFirstBreakpointToBeHit = true;
-            qq->notifyInferiorRunningRequested();
-            postCommand(_("-exec-run"), CB(handleExecRun));
+            if (m_gdbProc->isAdapter()) {
+                postCommand(_("-exec-continue"), CB(handleExecRun));
+                qq->notifyInferiorRunningRequested();
+            } else {
+                //debugMessage(_("STREAM: ") + msg + " " + needle.cap(1));
+                postCommand(_("tbreak *") + needle.cap(1));
+                m_waitingForFirstBreakpointToBeHit = true;
+                qq->notifyInferiorRunningRequested();
+                postCommand(_("-exec-run"), CB(handleExecRun));
+            }
         } else {
             debugMessage(_("PARSING START ADDRESS FAILED: ") + msg);
         }
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index c0ec344432162f1c8a8f3751c2aa94d983072c56..1dbc285a6ee0e9feb5e0eeeebc583d8d5db81d1f 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -106,6 +106,7 @@ public:
     qint64 write(const char *data) { return m_proc.write(data); }
     void setWorkingDirectory(const QString &dir) { m_proc.setWorkingDirectory(dir); }
     void setEnvironment(const QStringList &env) { m_proc.setEnvironment(env); }
+    bool isAdapter() const { return false; }
 
 private:
     QProcess m_proc;
diff --git a/src/plugins/debugger/gdb/gdbprocessbase.h b/src/plugins/debugger/gdb/gdbprocessbase.h
index bf5216ffe91fa12769744cc148bac184aff184ab..6c5825e6f663bb4304b50864a4b2cccd2defa09a 100644
--- a/src/plugins/debugger/gdb/gdbprocessbase.h
+++ b/src/plugins/debugger/gdb/gdbprocessbase.h
@@ -60,6 +60,7 @@ public:
     virtual qint64 write(const char *data) = 0;
     virtual void setWorkingDirectory(const QString &dir) = 0;
     virtual void setEnvironment(const QStringList &env) = 0;
+    virtual bool isAdapter() const = 0;
 
 signals:
     void error(QProcess::ProcessError);
diff --git a/src/plugins/debugger/symbian/symbianadapter.cpp b/src/plugins/debugger/symbian/symbianadapter.cpp
index 2184e6b739065c936931a285ef9311a60aac4cc6..97b0bd6885153acdaf76fa81cc65c87b37e94faa 100644
--- a/src/plugins/debugger/symbian/symbianadapter.cpp
+++ b/src/plugins/debugger/symbian/symbianadapter.cpp
@@ -71,7 +71,7 @@ SymbianAdapter::SymbianAdapter()
 {
     m_running = false;
     m_gdbAckMode = true;
-    m_verbose = 0;
+    m_verbose = 2;
     m_serialFrame = false;
     m_bufferedMemoryRead = true;
     m_rfcommDevice = "/dev/rfcomm0";
@@ -191,7 +191,6 @@ void SymbianAdapter::startInferior()
     appendString(&ba, file, TargetByteOrder);
     sendTrkMessage(0x40, TrkCB(handleCreateProcess), ba); // Create Item
     //sendTrkMessage(TRK_WRITE_QUEUE_NOOP_CODE, TrkCB(startGdbServer));
-    emit started();
 }
 
 void SymbianAdapter::logMessage(const QString &msg)
@@ -1047,7 +1046,7 @@ void SymbianAdapter::handleAndReportReadRegisters(const TrkResult &result)
     sendGdbServerMessage(ba, logMsg);
 }
 
-static inline QString msgMemoryReadError(int code, uint addr, uint len = 0)
+static QString msgMemoryReadError(int code, uint addr, uint len = 0)
 {
     const QString lenS = len ? QString::number(len) : QLatin1String("<unknown>");
     return QString::fromLatin1("Memory read error %1 at: 0x%2 %3")
@@ -1372,21 +1371,18 @@ void SymbianAdapter::startGdb()
         
     sendGdbMessage("-break-insert filebrowseappui.cpp:39");
     sendGdbMessage("target remote " + m_gdbServerName);
-    //sendGdbMessage("-exec-continue");
+    emit started();
 }
 
 void SymbianAdapter::sendGdbMessage(const QString &msg, GdbCallback callback,
     const QVariant &cookie)
 {
-    static int token = 0;
-    ++token;
     GdbCommand data;
     data.command = msg;
     data.callback = callback;
     data.cookie = cookie;
-    m_gdbCookieForToken[token] = data;
-    logMessage(QString("<- GDB: %1 %2").arg(token).arg(msg));
-    m_gdbProc.write(QString("%1%2\n").arg(token).arg(msg).toLatin1());
+    logMessage(QString("<- GDB: %2").arg(msg));
+    m_gdbProc.write(msg.toLatin1() + "\n");
 }
 
 void SymbianAdapter::handleSetTrkMainBreakpoint(const TrkResult &result)
@@ -1438,7 +1434,6 @@ void SymbianAdapter::terminate()
 bool SymbianAdapter::waitForFinished(int msecs)
 {
     return m_gdbProc.waitForFinished(msecs);
-    //return true;
 }
 
 QProcess::ProcessState SymbianAdapter::state() const
diff --git a/src/plugins/debugger/symbian/symbianadapter.h b/src/plugins/debugger/symbian/symbianadapter.h
index 0980112dce398089890e448563e9528d64358dc5..e694a1ffab34113eadda21b6249ea7da0684936a 100644
--- a/src/plugins/debugger/symbian/symbianadapter.h
+++ b/src/plugins/debugger/symbian/symbianadapter.h
@@ -93,6 +93,7 @@ public:
 
 public slots:
     void startInferior();
+    void run();
 
 signals:
     void output(const QString &msg);
@@ -103,7 +104,6 @@ private slots:
     void handleProcFinished(int exitCode, QProcess::ExitStatus exitStatus);
     void handleProcStarted();
     void handleProcStateChanged(QProcess::ProcessState newState);
-    void run();
     void startGdb();
 
 private:
@@ -135,6 +135,7 @@ public:
     qint64 write(const char *data);
     void setWorkingDirectory(const QString &dir);
     void setEnvironment(const QStringList &env);
+    bool isAdapter() const { return true; }
 
     //
     // TRK