diff --git a/src/plugins/debugger/debuggercore.h b/src/plugins/debugger/debuggercore.h index 0fa30f388e491d15603cb23c7817e08369b65989..82d45f65c056af24787eb9a0a913b3670444d1d0 100644 --- a/src/plugins/debugger/debuggercore.h +++ b/src/plugins/debugger/debuggercore.h @@ -54,7 +54,6 @@ class SavedAction; namespace Debugger { class DebuggerEngine; -class DebuggerRunControl; class DebuggerStartParameters; namespace Internal { @@ -101,8 +100,8 @@ public: virtual void removeLocationMark() = 0; virtual bool isReverseDebugging() const = 0; - virtual void runControlStarted(DebuggerRunControl *runControl) = 0; - virtual void runControlFinished(DebuggerRunControl *runControl) = 0; + virtual void runControlStarted(DebuggerEngine *engine) = 0; + virtual void runControlFinished(DebuggerEngine *engine) = 0; virtual void displayDebugger(DebuggerEngine *engine, bool updateEngine) = 0; virtual DebuggerLanguages activeLanguages() const = 0; virtual void synchronizeBreakpoints() = 0; diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index f99033dd6820c63de295e47734b47ca63e9e466e..4c6d2f8c3da314354f22db35b111e2f57673ea1f 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -333,9 +333,9 @@ protected: virtual void shutdownInferior() = 0; virtual void shutdownEngine() = 0; -protected: - DebuggerRunControl *runControl() const; + DebuggerRunControl *runControl() const; // FIXME: Protect. +protected: static QString msgWatchpointTriggered(BreakpointId id, int number, quint64 address); static QString msgWatchpointTriggered(BreakpointId id, diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index e8fcfaab9f4b77273d1b28a9c1450db5a6ab98d9..24667a3a8dd9ca2cec883a82127277324a5623b9 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -980,20 +980,16 @@ public slots: { showMessage("ATTEMPT SYNC", LogDebug); for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) { - if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) { - DebuggerEngine *engine = runControl->engine(); + if (DebuggerEngine *engine = m_snapshotHandler->at(i)) engine->attemptBreakpointSynchronization(); - } } } void synchronizeWatchers() { for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) { - if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) { - DebuggerEngine *engine = runControl->engine(); + if (DebuggerEngine *engine = m_snapshotHandler->at(i)) engine->watchHandler()->updateWatchers(); - } } } @@ -1043,8 +1039,8 @@ public slots: bool hasSnapshots() const { return m_snapshotHandler->size(); } void createNewDock(QWidget *widget); - void runControlStarted(DebuggerRunControl *runControl); - void runControlFinished(DebuggerRunControl *runControl); + void runControlStarted(DebuggerEngine *engine); + void runControlFinished(DebuggerEngine *engine); DebuggerLanguages activeLanguages() const; QString gdbBinaryForToolChain(int toolChain) const; void remoteCommand(const QStringList &options, const QStringList &); @@ -1477,11 +1473,11 @@ void DebuggerPluginPrivate::onCurrentProjectChanged(Project *project) } for (int i = 0, n = m_snapshotHandler->size(); i != n; ++i) { // Run controls might be deleted during exit. - if (DebuggerRunControl *runControl = m_snapshotHandler->at(i)) { + if (DebuggerEngine *engine = m_snapshotHandler->at(i)) { + DebuggerRunControl *runControl = engine->runControl(); RunConfiguration *rc = runControl->runConfiguration(); if (rc == activeRc) { m_snapshotHandler->setCurrentIndex(i); - DebuggerEngine *engine = runControl->engine(); updateState(engine); return; } @@ -2387,7 +2383,7 @@ void DebuggerPluginPrivate::aboutToUnloadSession() // with command-line debugging startup. // FIXME ABC: Still wanted? Iterate? //if (d->m_engine && state() != DebuggerNotReady - // && runControl()->sp().startMode == StartInternal) + // && engine()->sp().startMode == StartInternal) // d->m_engine->shutdown(); } @@ -2578,22 +2574,21 @@ void DebuggerPluginPrivate::createNewDock(QWidget *widget) dockWidget->show(); } -void DebuggerPluginPrivate::runControlStarted(DebuggerRunControl *runControl) +void DebuggerPluginPrivate::runControlStarted(DebuggerEngine *engine) { activateDebugMode(); - DebuggerEngine *engine = runControl->engine(); const QString message = tr("Starting debugger '%1' for tool chain '%2'...") .arg(engine->objectName()) .arg(engine->startParameters().toolChainName()); showMessage(message, StatusBar); showMessage(m_debuggerSettings->dump(), LogDebug); - m_snapshotHandler->appendSnapshot(runControl); + m_snapshotHandler->appendSnapshot(engine); connectEngine(engine); } -void DebuggerPluginPrivate::runControlFinished(DebuggerRunControl *runControl) +void DebuggerPluginPrivate::runControlFinished(DebuggerEngine *engine) { - m_snapshotHandler->removeSnapshot(runControl); + m_snapshotHandler->removeSnapshot(engine); if (m_snapshotHandler->size() == 0) { // Last engine quits. disconnectEngine(); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index 7ee26441f0db10b1e9dbff40a1f536adf4af3321..97d904998c62129097b04f811bd430f413ec1d89 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -656,7 +656,7 @@ void DebuggerRunControl::start() return; } - debuggerCore()->runControlStarted(this); + debuggerCore()->runControlStarted(engine()); // We might get a synchronous startFailed() notification on Windows, // when launching the process fails. Emit a proper finished() sequence. @@ -684,7 +684,7 @@ void DebuggerRunControl::handleFinished() emit addToOutputWindowInline(this, tr("Debugging has finished"), false); if (engine()) engine()->handleFinished(); - debuggerCore()->runControlFinished(this); + debuggerCore()->runControlFinished(engine()); } void DebuggerRunControl::showMessage(const QString &msg, int channel) diff --git a/src/plugins/debugger/snapshothandler.cpp b/src/plugins/debugger/snapshothandler.cpp index 93d5b16e83b9eb8422af2b104a286e8a7cf8a364..a270aa0a08c2a7e0f84bfe70b575731f9c79c262 100644 --- a/src/plugins/debugger/snapshothandler.cpp +++ b/src/plugins/debugger/snapshothandler.cpp @@ -123,21 +123,14 @@ SnapshotHandler::SnapshotHandler() SnapshotHandler::~SnapshotHandler() { for (int i = m_snapshots.size(); --i >= 0; ) { - if (DebuggerEngine *engine = engineAt(i)) { - const DebuggerStartParameters & sp = engine->startParameters(); + if (DebuggerEngine *engine = at(i)) { + const DebuggerStartParameters &sp = engine->startParameters(); if (sp.isSnapshot && !sp.coreFile.isEmpty()) QFile::remove(sp.coreFile); } } } -DebuggerEngine *SnapshotHandler::engineAt(int i) const -{ - DebuggerEngine *engine = m_snapshots.at(i)->engine(); - QTC_ASSERT(engine, qDebug() << "ENGINE AT " << i << "DELETED"); - return engine; -} - int SnapshotHandler::rowCount(const QModelIndex &parent) const { // Since the stack is not a tree, row count is 0 for any valid parent @@ -154,7 +147,7 @@ QVariant SnapshotHandler::data(const QModelIndex &index, int role) const if (!index.isValid() || index.row() >= m_snapshots.size()) return QVariant(); - const DebuggerEngine *engine = engineAt(index.row()); + const DebuggerEngine *engine = at(index.row()); if (role == SnapshotCapabilityRole) return engine && (engine->debuggerCapabilities() & SnapshotCapability); @@ -213,20 +206,20 @@ void SnapshotHandler::activateSnapshot(int index) { m_currentIndex = index; //qDebug() << "ACTIVATING INDEX: " << m_currentIndex << " OF " << size(); - debuggerCore()->displayDebugger(engineAt(index), true); + debuggerCore()->displayDebugger(at(index), true); reset(); } void SnapshotHandler::createSnapshot(int index) { - DebuggerEngine *engine = engineAt(index); + DebuggerEngine *engine = at(index); QTC_ASSERT(engine, return); engine->createSnapshot(); } void SnapshotHandler::removeSnapshot(int index) { - DebuggerEngine *engine = engineAt(index); + DebuggerEngine *engine = at(index); //qDebug() << "REMOVING " << engine; QTC_ASSERT(engine, return); #if 0 @@ -254,17 +247,17 @@ void SnapshotHandler::removeAll() reset(); } -void SnapshotHandler::appendSnapshot(DebuggerRunControl *rc) +void SnapshotHandler::appendSnapshot(DebuggerEngine *engine) { - m_snapshots.append(rc); + m_snapshots.append(engine); m_currentIndex = size() - 1; reset(); } -void SnapshotHandler::removeSnapshot(DebuggerRunControl *rc) +void SnapshotHandler::removeSnapshot(DebuggerEngine *engine) { // Could be that the run controls died before it was appended. - int index = m_snapshots.indexOf(rc); + int index = m_snapshots.indexOf(engine); if (index != -1) removeSnapshot(index); } @@ -275,22 +268,10 @@ void SnapshotHandler::setCurrentIndex(int index) reset(); } -DebuggerRunControl *SnapshotHandler::at(int i) const +DebuggerEngine *SnapshotHandler::at(int i) const { return m_snapshots.at(i).data(); } -QList<DebuggerRunControl*> SnapshotHandler::runControls() const -{ - // Return unique list of run controls - QList<DebuggerRunControl*> rc; - rc.reserve(m_snapshots.size()); - foreach(const QPointer<DebuggerRunControl> &runControlPtr, m_snapshots) - if (DebuggerRunControl *runControl = runControlPtr) - if (!rc.contains(runControl)) - rc.push_back(runControl); - return rc; -} - } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/snapshothandler.h b/src/plugins/debugger/snapshothandler.h index 56e421905d834a5b0b66478209f59e9884953a71..bd13026aec9e0dfdfc0ed5fa4f7dd30bcf209276 100644 --- a/src/plugins/debugger/snapshothandler.h +++ b/src/plugins/debugger/snapshothandler.h @@ -35,7 +35,6 @@ namespace Debugger { -class DebuggerRunControl; class DebuggerEngine; namespace Internal { @@ -59,12 +58,11 @@ public: void removeAll(); QAbstractItemModel *model() { return this; } int currentIndex() const { return m_currentIndex; } - void appendSnapshot(DebuggerRunControl *rc); - void removeSnapshot(DebuggerRunControl *rc); + void appendSnapshot(DebuggerEngine *engine); + void removeSnapshot(DebuggerEngine *engine); void setCurrentIndex(int index); int size() const { return m_snapshots.size(); } - DebuggerRunControl *at(int index) const; - QList<DebuggerRunControl *> runControls() const; + DebuggerEngine *at(int index) const; void createSnapshot(int index); void activateSnapshot(int index); @@ -78,10 +76,9 @@ private: QVariant headerData(int section, Qt::Orientation orientation, int role) const; Qt::ItemFlags flags(const QModelIndex &index) const; Q_SLOT void resetModel() { reset(); } - DebuggerEngine *engineAt(int i) const; int m_currentIndex; - QList< QPointer<DebuggerRunControl> > m_snapshots; + QList< QPointer<DebuggerEngine> > m_snapshots; const QVariant m_positionIcon; const QVariant m_emptyIcon; }; diff --git a/src/plugins/debugger/snapshotwindow.cpp b/src/plugins/debugger/snapshotwindow.cpp index 97519b68e8a97dd84a5aa27ea6a6af11de8d06bf..dedc3510c238c09ce406cdb4da6f6eacfc08f982 100644 --- a/src/plugins/debugger/snapshotwindow.cpp +++ b/src/plugins/debugger/snapshotwindow.cpp @@ -32,7 +32,7 @@ #include "debuggeractions.h" #include "debuggercore.h" -#include "debuggerrunner.h" +#include "debuggerengine.h" #include <utils/qtcassert.h> #include <utils/savedaction.h> @@ -136,7 +136,7 @@ void SnapshotWindow::contextMenuEvent(QContextMenuEvent *ev) void SnapshotWindow::removeSnapshot(int i) { - m_snapshotHandler->at(i)->stop(); + m_snapshotHandler->at(i)->quitDebugger(); } void SnapshotWindow::resizeColumnsToContents()