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