From ccd46ec4cf1ffcf255e3c3b91797be18fca0540f Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Tue, 22 Jun 2010 18:18:13 +0200 Subject: [PATCH] debugger: simplify debugger session data handling --- src/plugins/debugger/debuggerconstants.h | 3 +- src/plugins/debugger/debuggerengine.cpp | 33 +++++----- src/plugins/debugger/debuggerengine.h | 3 - src/plugins/debugger/debuggerplugin.cpp | 77 ++++++++++++------------ 4 files changed, 56 insertions(+), 60 deletions(-) diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h index 81ea35ee271..58956604183 100644 --- a/src/plugins/debugger/debuggerconstants.h +++ b/src/plugins/debugger/debuggerconstants.h @@ -178,8 +178,6 @@ enum ModelRoles RequestExecFrameUpRole, RequestExecDetachRole, RequestExecExitRole, - RequestLoadSessionDataRole, - RequestSaveSessionDataRole, RequestOperatedByInstructionTriggeredRole, RequestExecuteCommandRole, @@ -215,6 +213,7 @@ enum ModelRoles LocalsIsWatchpointAtPointerValueRole, RequestWatchPointRole, RequestToggleWatchRole, + RequestToolTipByExpressionRole, RequestClearCppCodeModelSnapshotRole, RequestAssignValueRole, RequestAssignTypeRole, diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index aea99d51b66..9943b7d9937 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -263,14 +263,6 @@ void DebuggerEngine::handleCommand(int role, const QVariant &value) //qDebug() << "COMMAND: " << role << value; switch (role) { - case RequestLoadSessionDataRole: - loadSessionData(); - break; - - case RequestSaveSessionDataRole: - saveSessionData(); - break; - case RequestReloadSourceFilesRole: reloadSourceFiles(); break; @@ -348,6 +340,15 @@ void DebuggerEngine::handleCommand(int role, const QVariant &value) executeDebuggerCommand(value.toString()); break; + case RequestToolTipByExpressionRole: { + QList<QVariant> list = value.toList(); + QTC_ASSERT(list.size() == 3, break); + setToolTipExpression(list.at(0).value<QPoint>(), + (TextEditor::ITextEditor *)(list.at(1).value<quint64>()), + list.at(2).toInt()); // Eeks. + break; + } + case RequestWatchPointRole: //if (QAction *action = qobject_cast<QAction *>(sender())) // watchPoint(action->data().toPoint()); @@ -551,17 +552,21 @@ void DebuggerEngine::breakByFunction(const QString &functionName) attemptBreakpointSynchronization(); } +/* void DebuggerEngine::loadSessionData() { - d->m_breakHandler.loadSessionData(); - d->m_watchHandler.loadSessionData(); + QTC_ASSERT(isSessionEngine(), return); + m_breakHandler.loadSessionData(); + m_watchHandler.loadSessionData(); } void DebuggerEngine::saveSessionData() { - d->m_breakHandler.saveSessionData(); - d->m_watchHandler.saveSessionData(); + QTC_ASSERT(isSessionEngine(), return); + m_breakHandler.saveSessionData(); + m_watchHandler.saveSessionData(); } +*/ void DebuggerEngine::resetLocation() { @@ -860,10 +865,8 @@ void DebuggerEngine::setState(DebuggerState state, bool forced) plugin()->updateState(this); - if (d->m_state == DebuggerNotReady) { - saveSessionData(); + if (d->m_state == DebuggerNotReady) d->m_runControl->debuggingFinished(); - } } bool DebuggerEngine::debuggerActionsEnabled() const diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 6a764b68887..11c45619d7f 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -222,9 +222,6 @@ public: void breakByFunction(const QString &functionName); void breakByFunctionMain(); - void loadSessionData(); - void saveSessionData(); - void executeStepX(); void executeStepOutX(); void executeStepNextX(); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index f679b12c370..71d4a552ac0 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -53,6 +53,7 @@ //#include "sessiondata.h" #include "watchutils.h" +#include "breakhandler.h" #include "stackhandler.h" // FIXME #include "watchhandler.h" // FIXME @@ -707,14 +708,30 @@ static bool isCurrentProjectCppBased() /////////////////////////////////////////////////////////////////////// // -// DummyEngine +// SessionEngine // /////////////////////////////////////////////////////////////////////// -class DummyEngine : public DebuggerEngine +// This class contains data serving as a template for debugger engines +// started during a session. + +class SessionEngine : public DebuggerEngine { public: - DummyEngine() : DebuggerEngine(DebuggerStartParameters()) {} + SessionEngine() : DebuggerEngine(DebuggerStartParameters()) {} + + void loadSessionData() + { + breakHandler()->loadSessionData(); + watchHandler()->loadSessionData(); + } + + void saveSessionData() + { + watchHandler()->saveSessionData(); + breakHandler()->saveSessionData(); + } + }; @@ -768,7 +785,7 @@ public: bool initialize(const QStringList &arguments, QString *errorMessage); void notifyCurrentEngine(int role, const QVariant &value = QVariant()); void connectEngine(DebuggerEngine *engine); - void disconnectEngine() { connectEngine(m_dummySessionEngine); } + void disconnectEngine() { connectEngine(m_sessionEngine); } public slots: void updateWatchersHeader(int section, int, int newSize) @@ -811,8 +828,6 @@ public slots: void attachCmdLine(); void attachRemoteTcf(); - void loadSessionData(); - void saveSessionData(); void interruptDebuggingRequest(); void exitDebugger(); @@ -832,12 +847,6 @@ public slots: ProjectExplorer::RunControl *createDebugger(const DebuggerStartParameters &sp); void startDebugger(ProjectExplorer::RunControl *runControl); - void setToolTipExpression(const QPoint & /* mousePos */, - TextEditor::ITextEditor * /* editor */, int /* cursorPos */) - { - // FIXME - } - void dumpLog(); void cleanupViews(); @@ -912,7 +921,7 @@ public: QAbstractItemView *m_threadsWindow; DebuggerOutputWindow *m_outputWindow; - DebuggerEngine *m_dummySessionEngine; + SessionEngine *m_sessionEngine; bool m_busy; QTimer m_statusTimer; @@ -955,7 +964,7 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(DebuggerPlugin *plugin) m_threadsWindow = 0; m_outputWindow = 0; - m_dummySessionEngine = 0; + m_sessionEngine = 0; m_debugMode = 0; m_locationMark = 0; m_gdbRunningContext = 0; @@ -1029,7 +1038,7 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, QString *er m_commandWindow = new QTreeView; // Session related data - m_dummySessionEngine = new DummyEngine; + m_sessionEngine = new SessionEngine; // Debug mode setup m_debugMode = new DebugMode(this); @@ -1898,7 +1907,12 @@ void DebuggerPluginPrivate::showToolTip(ITextEditor *editor, const QPoint &point return; if (state() == DebuggerNotReady) return; - setToolTipExpression(point, editor, pos); + + QList<QVariant> list; + list.append(point); + list.append(quint64(editor)); + list.append(pos); + notifyCurrentEngine(RequestToolTipByExpressionRole, list); } ProjectExplorer::RunControl * @@ -1919,7 +1933,7 @@ void DebuggerPluginPrivate::startDebugger(ProjectExplorer::RunControl *rc) void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine) { - //if (engine == m_dummySessionEngine) + //if (engine == m_sessionEngine) // qDebug() << "CONNECTING DUMMY ENGINE" << engine; //else // qDebug() << "CONNECTING ENGINE " << engine; @@ -2263,8 +2277,7 @@ void DebuggerPluginPrivate::activateDebugMode() void DebuggerPluginPrivate::sessionLoaded() { - //qDebug() << "SESSION LOADED"; - loadSessionData(); + m_sessionEngine->loadSessionData(); } void DebuggerPluginPrivate::aboutToUnloadSession() @@ -2272,7 +2285,7 @@ void DebuggerPluginPrivate::aboutToUnloadSession() // Stop debugging the active project when switching sessions. // Note that at startup, session switches may occur, which interfer // with command-line debugging startup. - // FIXME ABC: Still wanted? + // FIXME ABC: Still wanted? Iterate? //if (d->m_engine && state() != DebuggerNotReady // && runControl()->sp().startMode == StartInternal) // d->m_engine->shutdown(); @@ -2280,23 +2293,7 @@ void DebuggerPluginPrivate::aboutToUnloadSession() void DebuggerPluginPrivate::aboutToSaveSession() { - saveSessionData(); -} - -void DebuggerPluginPrivate::loadSessionData() -{ - // FIXME: Iterate? - //qDebug() << "\nLOADING SESSION DATA..."; - notifyCurrentEngine(RequestLoadSessionDataRole); - //qDebug() << "LOADED SESSION DATA\n"; -} - -void DebuggerPluginPrivate::saveSessionData() -{ - // FIXME: Iterate? - //qDebug() << "\nSAVING SESSION DATA..."; - notifyCurrentEngine(RequestSaveSessionDataRole); - //qDebug() << "SAVED SESSION DATA\n"; + m_sessionEngine->saveSessionData(); } void DebuggerPluginPrivate::interruptDebuggingRequest() @@ -2358,8 +2355,8 @@ DebuggerPlugin::DebuggerPlugin() DebuggerPlugin::~DebuggerPlugin() { - delete d->m_dummySessionEngine; - d->m_dummySessionEngine = 0; + delete d->m_sessionEngine; + d->m_sessionEngine = 0; theInstance = 0; delete DebuggerSettings::instance(); @@ -2692,7 +2689,7 @@ void DebuggerPlugin::runControlFinished(DebuggerRunControl *runControl) DebuggerEngine *DebuggerPlugin::sessionTemplate() { - return d->m_dummySessionEngine; + return d->m_sessionEngine; } ////////////////////////////////////////////////////////////////////// -- GitLab