diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index f64dd94d644..a3216cd4caa 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -243,6 +243,9 @@ CdbEngine::CdbEngine() : this, &CdbEngine::readyReadStandardOut); connect(action(UseDebuggingHelpers), &SavedAction::valueChanged, this, &CdbEngine::updateLocals); + + if (action(UseCodeModel)->isChecked()) + m_codeModelSnapshot = CppTools::CppModelManager::instance()->snapshot(); } void CdbEngine::init() @@ -1166,7 +1169,7 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters) if (boolSetting(UseCodeModel)) { QStringList uninitializedVariables; - getUninitializedVariables(Internal::cppCodeModelSnapshot(), + getUninitializedVariables(m_codeModelSnapshot, frame.function, frame.file, frame.line, &uninitializedVariables); cmd.arg("uninitialized", uninitializedVariables); } @@ -1237,7 +1240,7 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters) // variables in case of errors in uninitializedVariables(). if (boolSetting(UseCodeModel)) { QStringList uninitializedVariables; - getUninitializedVariables(Internal::cppCodeModelSnapshot(), + getUninitializedVariables(m_codeModelSnapshot, frame.function, frame.file, frame.line, &uninitializedVariables); if (!uninitializedVariables.isEmpty()) { str << blankSeparator << "-u \""; @@ -2634,7 +2637,7 @@ void CdbEngine::attemptBreakpointSynchronization() && parameters.type == BreakpointByFileAndLine && boolSetting(CdbBreakPointCorrection)) { if (lineCorrection.isNull()) - lineCorrection.reset(new BreakpointCorrectionContext(Internal::cppCodeModelSnapshot(), + lineCorrection.reset(new BreakpointCorrectionContext(m_codeModelSnapshot, CppTools::CppModelManager::instance()->workingCopy())); response.lineNumber = lineCorrection->fixLineNumber(parameters.fileName, parameters.lineNumber); QString cmd = cdbAddBreakpointCommand(response, m_sourcePathMappings, id, false); diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index d569dee25ec..97bfa62821a 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -28,6 +28,8 @@ #include #include +#include + #include #include @@ -248,6 +250,7 @@ private: QScopedPointer m_coreStopReason; int m_pythonVersion = 0; // 0xMMmmpp MM = major; mm = minor; pp = patch bool m_initialSessionIdleHandled = false; + mutable CPlusPlus::Snapshot m_codeModelSnapshot; }; } // namespace Internal diff --git a/src/plugins/debugger/debuggercore.h b/src/plugins/debugger/debuggercore.h index db77a8e5a7a..c9eb7c0f7e8 100644 --- a/src/plugins/debugger/debuggercore.h +++ b/src/plugins/debugger/debuggercore.h @@ -67,7 +67,6 @@ enum TestCases // Some convenience. void updateState(DebuggerRunTool *runTool); void updateLocalsWindow(bool showReturn); -const CPlusPlus::Snapshot &cppCodeModelSnapshot(); bool hasSnapshots(); void openTextEditor(const QString &titlePattern, const QString &contents); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 41105707043..e29a4fdec66 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -88,7 +88,6 @@ #include #include -#include #include #include @@ -1042,7 +1041,6 @@ public: bool m_busy = false; QString m_lastPermanentStatusMessage; - mutable CPlusPlus::Snapshot m_codeModelSnapshot; DebuggerPlugin *m_plugin = nullptr; SnapshotHandler *m_snapshotHandler = nullptr; @@ -2607,7 +2605,6 @@ void DebuggerPluginPrivate::updateState(DebuggerRunTool *runTool) m_debugWithoutDeployAction->setEnabled(canRun); setProxyAction(m_visibleStartAction, Id(Constants::DEBUG)); m_hiddenStopAction->setAction(m_undisturbableAction); - m_codeModelSnapshot = CPlusPlus::Snapshot(); setBusyCursor(false); cleanupViews(); } else if (state == InferiorUnrunnable) { @@ -2812,13 +2809,6 @@ void DebuggerPluginPrivate::aboutToShutdown() m_shutdownTimer.start(); } -const CPlusPlus::Snapshot &cppCodeModelSnapshot() -{ - if (dd->m_codeModelSnapshot.isEmpty() && action(UseCodeModel)->isChecked()) - dd->m_codeModelSnapshot = CppTools::CppModelManager::instance()->snapshot(); - return dd->m_codeModelSnapshot; -} - void setSessionValue(const QByteArray &key, const QVariant &value) { SessionManager::setValue(QString::fromUtf8(key), value);