From 36ed9f8c28f84c6f8b74b2e38bf715db255f554b Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 13 Jan 2025 17:34:43 +0100 Subject: [PATCH] Debugger: Transform a few fields of DebuggerRunParameters Transform macroExpander, exitCode, testCase. Task-number: QTCREATORBUG-29168 Change-Id: Ibf6398ecc691191646ae84655802abe829793736 Reviewed-by: hjk --- src/plugins/debugger/debuggerengine.cpp | 8 ++++---- src/plugins/debugger/debuggerengine.h | 14 ++++++++++---- src/plugins/debugger/debuggerruncontrol.cpp | 11 +++-------- src/plugins/debugger/debuggerruncontrol.h | 2 -- src/plugins/debugger/debuggertest.cpp | 2 +- src/plugins/debugger/gdb/gdbengine.cpp | 4 ++-- 6 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index be5692db1a7..9a38d333e0f 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -137,7 +137,7 @@ DebuggerRunParameters DebuggerRunParameters::fromRunControl(ProjectExplorer::Run params.m_runAsRoot = runAsRootAspect->value; params.setSysRoot(SysRootKitAspect::sysRoot(kit)); - params.macroExpander = runControl->macroExpander(); + params.m_macroExpander = runControl->macroExpander(); params.m_debugger = DebuggerKitAspect::runnable(kit); params.m_cppEngineType = DebuggerKitAspect::engineType(kit); params.m_version = DebuggerKitAspect::version(kit); @@ -1157,7 +1157,7 @@ QString DebuggerEngine::stateName(int s) void DebuggerEngine::notifyExitCode(int code) { - d->m_runParameters.exitCode = code; + d->m_runParameters.setExitCode(code); } void DebuggerEngine::showStatusMessage(const QString &msg, int timeout) const @@ -2133,7 +2133,7 @@ bool DebuggerEngine::canDisplayTooltip() const QString DebuggerEngine::expand(const QString &string) const { - return runParameters().macroExpander->expand(string); + return runParameters().macroExpander()->expand(string); } QString DebuggerEngine::nativeStartupCommands() const @@ -3111,7 +3111,7 @@ void CppDebuggerEngine::validateRunParameters(DebuggerRunParameters &rp) globalRegExpSourceMap.reserve(sourcePathMap.size()); for (auto it = sourcePathMap.begin(), end = sourcePathMap.end(); it != end; ++it) { if (it.key().startsWith('(')) { - const QString expanded = rp.macroExpander->expand(it.value()); + const QString expanded = rp.macroExpander()->expand(it.value()); if (!expanded.isEmpty()) globalRegExpSourceMap.push_back({QRegularExpression(it.key()), expanded}); } diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 1c1824cd3d6..c2c1d571374 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -233,12 +233,13 @@ public: bool isCppDebugging() const; bool isNativeMixedDebugging() const; - const Utils::MacroExpander *macroExpander = nullptr; + const Utils::MacroExpander *macroExpander() const { return m_macroExpander; } - std::optional exitCode = {}; + void setExitCode(int code) { m_exitCode = code; } + std::optional exitCode() const { return m_exitCode; } - // For Debugger testing. - int testCase = 0; + void setTestCase(int testCase) { m_testCase = testCase; } + int testCase() const { return m_testCase; } QStringList validationErrors; @@ -331,6 +332,11 @@ private: QString m_crashParameter; // Used by AttachCrashedExternal. bool m_nativeMixedEnabled = false; + + const Utils::MacroExpander *m_macroExpander = nullptr; + std::optional m_exitCode = {}; + + int m_testCase = 0; // For Debugger testing. }; namespace Internal { diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index d1acc6a0bd2..12af12c242e 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -103,11 +103,6 @@ public: } // namespace Internal -void DebuggerRunTool::setTestCase(int testCase) -{ - m_runParameters.testCase = testCase; -} - void DebuggerRunTool::addQmlServerInferiorCommandLineArgumentIfNeeded() { d->addQmlServerInferiorCommandLineArgumentIfNeeded = true; @@ -502,11 +497,11 @@ void DebuggerRunTool::handleEngineFinished(DebuggerEngine *engine) { engine->prepareForRestart(); if (--d->engineStopsNeeded == 0) { - QString cmd = m_runParameters.inferior().command.toUserOutput(); - QString msg = engine->runParameters().exitCode // Main engine. + const QString cmd = m_runParameters.inferior().command.toUserOutput(); + const QString msg = engine->runParameters().exitCode() // Main engine. ? Tr::tr("Debugging of %1 has finished with exit code %2.") .arg(cmd) - .arg(*engine->runParameters().exitCode) + .arg(*engine->runParameters().exitCode()) : Tr::tr("Debugging of %1 has finished.").arg(cmd); appendMessage(msg, NormalMessageFormat); reportStopped(); diff --git a/src/plugins/debugger/debuggerruncontrol.h b/src/plugins/debugger/debuggerruncontrol.h index 463f3ace57d..abbfff91337 100644 --- a/src/plugins/debugger/debuggerruncontrol.h +++ b/src/plugins/debugger/debuggerruncontrol.h @@ -32,8 +32,6 @@ public: void setUseDebugServer(Utils::ProcessHandle attachPid, bool essential, bool useMulti); - void setTestCase(int testCase); - void kickoffTerminalProcess(); void interruptTerminal(); diff --git a/src/plugins/debugger/debuggertest.cpp b/src/plugins/debugger/debuggertest.cpp index c5485da011c..c52cad86306 100644 --- a/src/plugins/debugger/debuggertest.cpp +++ b/src/plugins/debugger/debuggertest.cpp @@ -110,7 +110,7 @@ void DebuggerUnitTests::testStateMachine() DebuggerRunParameters &rp = debugger->runParameters(); rp.setInferior(rc->runnable()); - debugger->setTestCase(TestNoBoundsOfCurrentFunction); + rp.setTestCase(TestNoBoundsOfCurrentFunction); connect(debugger, &DebuggerRunTool::stopped, &QTestEventLoop::instance(), &QTestEventLoop::exitLoop); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 0586c9cbc3e..388543766c1 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3813,7 +3813,7 @@ static SourcePathMap mergeStartParametersSourcePathMap(const DebuggerRunParamete for (auto it = in.constBegin(), end = in.constEnd(); it != end; ++it) { // Entries that start with parenthesis are handled in CppDebuggerEngine::validateRunParameters if (!it.key().startsWith('(')) - rc.insert(it.key(), sp.macroExpander->expand(it.value())); + rc.insert(it.key(), sp.macroExpander()->expand(it.value())); } return rc; } @@ -4308,7 +4308,7 @@ bool GdbEngine::usesTargetAsync() const void GdbEngine::scheduleTestResponse(int testCase, const QString &response) { - if (!m_testCases.contains(testCase) && runParameters().testCase != testCase) + if (!m_testCases.contains(testCase) && runParameters().testCase() != testCase) return; int token = currentToken() + 1;