aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <[email protected]>2025-01-13 16:42:22 +0100
committerhjk <[email protected]>2025-01-17 11:52:19 +0000
commit5ac7d31287e501f8ce31d2395728c9b06b6377aa (patch)
tree9c6030edef5ad975b4ce4c92a9c586726c4a50c5
parent404ed88a3f61cd05b7e344b8a757f954ccf78daf (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.cpp5
-rw-r--r--src/plugins/debugger/debuggerengine.cpp26
-rw-r--r--src/plugins/debugger/debuggerengine.h8
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp21
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()