From ad6ee1cafb5f496be3caeff871a9547adf885c30 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 22 Sep 2009 12:10:12 +0200 Subject: [PATCH] debugger: clean up gdbengine --- src/plugins/debugger/gdb/gdbengine.cpp | 76 +++---------------- src/plugins/debugger/gdb/gdbengine.h | 9 +-- src/plugins/debugger/gdb/remotegdbadapter.cpp | 19 ++++- 3 files changed, 32 insertions(+), 72 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 092bdbce09d..5dea4690965 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -1457,9 +1457,7 @@ void GdbEngine::shutdown() void GdbEngine::detachDebugger() { - postCommand(_("detach")); - // FIXME: use postCommand(_("detach"), CB(handleExitHelper)) ? - postCommand(_("-gdb-exit"), CB(handleExit)); + postCommand(_("detach"), CB(handleDetach)); } void GdbEngine::exitDebugger() @@ -1469,36 +1467,11 @@ void GdbEngine::exitDebugger() m_gdbAdapter->shutdown(); } -void GdbEngine::handleExitHelper(const GdbResultRecord &, const QVariant &) +void GdbEngine::handleDetach(const GdbResultRecord &, const QVariant &) { - exitDebugger2(); + exitDebugger(); } -void GdbEngine::exitDebugger2() -{ -/* - postCommand(_("-gdb-exit"), CB(handleExit)); - // 20s can easily happen when loading webkit debug information - if (!m_gdbAdapter->waitForFinished(20000)) { - debugMessage(_("FORCING TERMINATION: %1") - .arg(m_gdbAdapter->state())); - m_gdbAdapter->terminate(); - m_gdbAdapter->waitForFinished(20000); - } - - if (m_gdbAdapter->state() != QProcess::NotRunning) { - debugMessage(_("PROBLEM STOPPING DEBUGGER: STATE %1") - .arg(m_gdbAdapter->state())); - m_gdbAdapter->kill(); - } -*/ - - m_outputCollector.shutdown(); - initializeVariables(); - //m_manager->settings()->m_debugDebuggingHelpers = false; -} - - int GdbEngine::currentFrame() const { return qq->stackHandler()->currentIndex(); @@ -1506,20 +1479,15 @@ int GdbEngine::currentFrame() const void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp) { - m_startParameters = sp; - m_gdbAdapter->startAdapter(sp); -/* - // This should be set by the constructor or in exitDebugger(). + // This should be set by the constructor or in exitDebugger() + // via initializeVariables() QTC_ASSERT(m_debuggingHelperState == DebuggingHelperUninitialized, initializeVariables()); - if (m_gdbAdapter->state() != QProcess::NotRunning) { - debugMessage(_("GDB IS ALREADY RUNNING, STATE: %1").arg(m_gdbAdapter->state())); - m_gdbAdapter->kill(); - emitStartFailed(); - return; - } + m_startParameters = sp; + m_gdbAdapter->startAdapter(sp); +/* QStringList gdbArgs; gdbArgs.prepend(_("mi")); gdbArgs.prepend(_("-i")); @@ -1527,19 +1495,6 @@ void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp) if (startMode() == AttachCore || startMode() == AttachExternal || startMode() == AttachCrashedExternal) { // nothing to do - } else if (startMode() == StartRemote) { - // Start the remote server - if (m_startParameters->serverStartScript.isEmpty()) { - showStatusMessage(_("No server start script given. " - "Assuming server runs already.")); - } else { - if (!m_startParameters->workingDir.isEmpty()) - m_uploadProc.setWorkingDirectory(m_startParameters->workingDir); - if (!m_startParameters->environment.isEmpty()) - m_uploadProc.setEnvironment(m_startParameters->environment); - m_uploadProc.start(_("/bin/sh ") + m_startParameters->serverStartScript); - m_uploadProc.waitForStarted(); - } } else if (m_startParameters->useTerminal) { m_stubProc.stop(); // We leave the console open, so recycle it now. @@ -1566,19 +1521,6 @@ void GdbEngine::startDebugger(const DebuggerStartParametersPtr &sp) if (!m_startParameters->environment.isEmpty()) m_gdbAdapter->setEnvironment(m_startParameters->environment); } - - #if 0 - qDebug() << "Command:" << m_manager->settings()->m_gdbCmd; - qDebug() << "WorkingDirectory:" << m_gdbAdapter->workingDirectory(); - qDebug() << "ScriptFile:" << m_manager->settings()->m_scriptFile; - qDebug() << "Environment:" << m_gdbAdapter->environment(); - qDebug() << "Arguments:" << gdbArgs; - qDebug() << "BuildDir:" << m_startParameters->buildDir; - qDebug() << "ExeFile:" << m_startParameters->executable; - #endif - - QString loc = theDebuggerStringSetting(GdbLocation); - showStatusMessage(tr("Starting Debugger: ") + loc + _c(' ') + gdbArgs.join(_(" "))); m_gdbAdapter->start(loc, gdbArgs); */ } @@ -1591,6 +1533,7 @@ void GdbEngine::continueInferior() postCommand(_("-exec-continue"), CB(handleExecContinue)); } +#if 0 void GdbEngine::handleAttach(const GdbResultRecord &, const QVariant &) { qq->notifyInferiorStopped(); @@ -1648,6 +1591,7 @@ void GdbEngine::handleTargetRemote(const GdbResultRecord &record, const QVariant postCommand(_("-gdb-exit"), CB(handleExit)); } } +#endif void GdbEngine::handleExit(const GdbResultRecord &, const QVariant &) { diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 58c7d64a75a..e26fe58fd53 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -107,7 +107,6 @@ private: void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor *editor, int cursorPos); void startDebugger(const DebuggerStartParametersPtr &sp); void exitDebugger(); - void exitDebugger2(); void detachDebugger(); void continueInferior(); @@ -248,7 +247,7 @@ private: int terminationIndex(const QByteArray &buffer, int &length); void handleResponse(const QByteArray &buff); void handleStart(const GdbResultRecord &response, const QVariant &); - void handleAttach(const GdbResultRecord &, const QVariant &); + //void handleAttach(const GdbResultRecord &, const QVariant &); void handleAqcuiredInferior(); void handleAsyncOutput(const GdbMi &data); void handleStop1(const GdbResultRecord &, const QVariant &cookie); @@ -268,9 +267,9 @@ private: void handleQuerySources(const GdbResultRecord &response, const QVariant &); void handleTargetCore(const GdbResultRecord &, const QVariant &); void handleExit(const GdbResultRecord &, const QVariant &); - void handleExitHelper(const GdbResultRecord &, const QVariant &); - void handleSetTargetAsync(const GdbResultRecord &, const QVariant &); - void handleTargetRemote(const GdbResultRecord &, const QVariant &); + void handleDetach(const GdbResultRecord &, const QVariant &); + //void handleSetTargetAsync(const GdbResultRecord &, const QVariant &); + //void handleTargetRemote(const GdbResultRecord &, const QVariant &); void handleWatchPoint(const GdbResultRecord &, const QVariant &); bool showToolTip(); diff --git a/src/plugins/debugger/gdb/remotegdbadapter.cpp b/src/plugins/debugger/gdb/remotegdbadapter.cpp index e84eaf9180b..85aaaa31822 100644 --- a/src/plugins/debugger/gdb/remotegdbadapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbadapter.cpp @@ -101,7 +101,24 @@ void RemoteGdbAdapter::startAdapter(const DebuggerStartParametersPtr &sp) setEnvironment(m_startParameters->environment); QString location = theDebuggerStringSetting(GdbLocation); - //showStatusMessage(tr("Starting Debugger: ") + loc + _c(' ') + gdbArgs.join(_(" "))); + +/* + // FIXME: make asynchroneouis + // Start the remote server + if (m_startParameters->serverStartScript.isEmpty()) { + showStatusMessage(_("No server start script given. " + "Assuming server runs already.")); + } else { + if (!m_startParameters->workingDir.isEmpty()) + m_uploadProc.setWorkingDirectory(m_startParameters->workingDir); + if (!m_startParameters->environment.isEmpty()) + m_uploadProc.setEnvironment(m_startParameters->environment); + m_uploadProc.start(_("/bin/sh ") + m_startParameters->serverStartScript); + m_uploadProc.waitForStarted(); + } +*/ + + // Start the debugger m_gdbProc.start(location, gdbArgs); } -- GitLab