diff options
author | hjk <[email protected]> | 2025-01-13 16:42:22 +0100 |
---|---|---|
committer | hjk <[email protected]> | 2025-01-17 11:52:19 +0000 |
commit | 5ac7d31287e501f8ce31d2395728c9b06b6377aa (patch) | |
tree | 9c6030edef5ad975b4ce4c92a9c586726c4a50c5 | |
parent | 404ed88a3f61cd05b7e344b8a757f954ccf78daf (diff) |
Debugger: Move the splitting of user-defined commands to RunParameters
Change-Id: Ia6b35f5d9c02607e1d14d44764fb7e859918e60d
Reviewed-by: David Schulz <[email protected]>
-rw-r--r-- | src/plugins/debugger/cdb/cdbengine.cpp | 5 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerengine.cpp | 26 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerengine.h | 8 | ||||
-rw-r--r-- | src/plugins/debugger/gdb/gdbengine.cpp | 21 |
4 files changed, 40 insertions, 20 deletions
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index adbcb9e9c07..58f634f7b9e 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -437,8 +437,9 @@ void CdbEngine::handleInitialSessionIdle() { m_initialSessionIdleHandled = true; const DebuggerRunParameters &rp = runParameters(); - if (!rp.commandsAfterConnect().isEmpty()) - runCommand({rp.commandsAfterConnect(), NoFlags}); + const QStringList commands = rp.commandsAfterConnect(); + for (const QString &command : commands) + runCommand({command, NoFlags}); //operateByInstructionTriggered(operatesByInstruction()); // QmlCppEngine expects the QML engine to be connected before any breakpoints are hit // (attemptBreakpointSynchronization() will be directly called then) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 833f5e36f47..2a7b48f4bf2 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -335,6 +335,32 @@ void DebuggerRunParameters::addSolibSearchDir(const QString &str) m_solibSearchPath.append(FilePath::fromString(path)); } +static QStringList splitCommandHelper(const QString &text, const MacroExpander *expander) +{ + QStringList result; + + if (!text.isEmpty()) { + const QStringList commands = expander->expand(text).split('\n'); + for (const QString &command : commands) { + const QString trimmed = command.trimmed(); + if (!trimmed.isEmpty()) + result.append(trimmed); + } + } + + return result; +} + +QStringList DebuggerRunParameters::commandsAfterConnect() const +{ + return splitCommandHelper(m_commandsAfterConnect, m_macroExpander); +} + +QStringList DebuggerRunParameters::commandsForReset() const +{ + return splitCommandHelper(m_commandsForReset, m_macroExpander); +} + bool DebuggerRunParameters::isCppDebugging() const { return cppEngineType() != NoEngineType; diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 6c6c17911fa..c7732607426 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -132,15 +132,15 @@ public: } QMap<QString, QString> sourcePathMap() const { return m_sourcePathMap; } + void setCommandsAfterConnect(const QString &commands) { m_commandsAfterConnect = commands; } + QStringList commandsAfterConnect() const; + void setCommandsForReset(const QString &commands) { m_commandsForReset = commands; } - QString commandsForReset() const { return m_commandsForReset; } + QStringList commandsForReset() const; void setUseContinueInsteadOfRun(bool on) { m_useContinueInsteadOfRun = on; } bool useContinueInsteadOfRun() const { return m_useContinueInsteadOfRun; } - void setCommandsAfterConnect(const QString &commands) { m_commandsAfterConnect = commands; } - QString commandsAfterConnect() const { return m_commandsAfterConnect; } - void addExpectedSignal(const QString &signal) { m_expectedSignals.append(signal); } QStringList expectedSignals() const { return m_expectedSignals; } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index d10cd8edf71..dc17a32bd64 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4172,15 +4172,10 @@ void GdbEngine::abortDebuggerProcess() void GdbEngine::resetInferior() { - const QString commandsForReset = runParameters().commandsForReset(); - if (!commandsForReset.isEmpty()) { - const QStringList commands = expand(commandsForReset).split('\n'); - for (QString command : commands) { - command = command.trimmed(); - if (!command.isEmpty()) - runCommand({command, ConsoleCommand | NeedsTemporaryStop | NativeCommand}); - } - } + const QStringList commands = runParameters().commandsForReset(); + for (const QString &command : commands) + runCommand({command, ConsoleCommand | NeedsTemporaryStop | NativeCommand}); + m_rerunPending = true; requestInterruptInferior(); runEngine(); @@ -4435,11 +4430,9 @@ void GdbEngine::claimInitialBreakpoints() // and even if it fails (e.g. due to stripped binaries), continuing with // the start up is the best we can do. - if (!rp.commandsAfterConnect().isEmpty()) { - const QString commands = expand(rp.commandsAfterConnect()); - for (const QString &command : commands.split('\n')) - runCommand({command, NativeCommand}); - } + const QStringList commands = rp.commandsAfterConnect(); + for (const QString &command : commands) + runCommand({command, NativeCommand}); } void GdbEngine::setupInferior() |