Debugger: Get rid of setUseDebugServer()

Move fields into DebuggerRunParameters.

Change-Id: Ieb43aede46a6a401da06dbbf2cd43d71ba56fed3
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2025-01-13 18:33:18 +01:00
parent 54b1107672
commit 13f3e73968
5 changed files with 25 additions and 23 deletions

View File

@@ -256,6 +256,15 @@ public:
void setUVisionSimulator(bool on) { m_uVisionSimulator = on; } void setUVisionSimulator(bool on) { m_uVisionSimulator = on; }
bool uVisionSimulator() const { return m_uVisionSimulator; } bool uVisionSimulator() const { return m_uVisionSimulator; }
void setServerAttachPid(const Utils::ProcessHandle &handle) { m_serverAttachPid = handle; }
Utils::ProcessHandle serverAttachPid() const { return m_serverAttachPid; }
void setServerUseMulti(bool on) { m_serverUseMulti = on; }
bool serverUseMulti() const { return m_serverUseMulti; }
void setServerEssential(bool on) { m_serverEssential = on; }
bool serverEssential() const { return m_serverEssential; }
private: private:
DebuggerStartMode m_startMode = NoStartMode; DebuggerStartMode m_startMode = NoStartMode;
DebuggerCloseMode m_closeMode = KillAtClose; DebuggerCloseMode m_closeMode = KillAtClose;
@@ -348,6 +357,10 @@ private:
Utils::FilePath m_uVisionProjectFilePath; // UVSC-specific debugger constant. Utils::FilePath m_uVisionProjectFilePath; // UVSC-specific debugger constant.
Utils::FilePath m_uVisionOptionsFilePath; // UVSC-specific debugger constant. Utils::FilePath m_uVisionOptionsFilePath; // UVSC-specific debugger constant.
bool m_uVisionSimulator = false; bool m_uVisionSimulator = false;
Utils::ProcessHandle m_serverAttachPid;
bool m_serverUseMulti = true;
bool m_serverEssential = true;
}; };
namespace Internal { namespace Internal {

View File

@@ -1674,7 +1674,9 @@ void DebuggerPluginPrivate::attachToRunningApplication()
auto debugger = new DebuggerRunTool(runControl); auto debugger = new DebuggerRunTool(runControl);
DebuggerRunParameters &rp = debugger->runParameters(); DebuggerRunParameters &rp = debugger->runParameters();
debugger->setId("AttachToRunningProcess"); debugger->setId("AttachToRunningProcess");
debugger->setUseDebugServer(ProcessHandle(processInfo.processId), false, false); rp.setServerAttachPid(ProcessHandle(processInfo.processId));
rp.setServerUseMulti(false);
rp.setServerEssential(false);
rp.setStartMode(AttachToRemoteProcess); rp.setStartMode(AttachToRemoteProcess);
rp.setCloseMode(DetachAtClose); rp.setCloseMode(DetachAtClose);
rp.setUseContinueInsteadOfRun(true); rp.setUseContinueInsteadOfRun(true);

View File

@@ -96,9 +96,6 @@ public:
// DebugServer // DebugServer
Process debuggerServerProc; Process debuggerServerProc;
ProcessHandle serverAttachPid;
bool serverUseMulti = true;
bool serverEssential = true;
}; };
} // namespace Internal } // namespace Internal
@@ -692,15 +689,15 @@ void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup()
const QString ipAndPort("`echo $SSH_CLIENT | cut -d ' ' -f 1`:%1"); const QString ipAndPort("`echo $SSH_CLIENT | cut -d ' ' -f 1`:%1");
cmd.addArgs(ipAndPort.arg(runControl()->debugChannel().port()), CommandLine::Raw); cmd.addArgs(ipAndPort.arg(runControl()->debugChannel().port()), CommandLine::Raw);
if (d->serverAttachPid.isValid()) if (m_runParameters.serverAttachPid().isValid())
cmd.addArgs({"--attach", QString::number(d->serverAttachPid.pid())}); cmd.addArgs({"--attach", QString::number(m_runParameters.serverAttachPid().pid())});
else else
cmd.addCommandLineAsArgs(runControl()->runnable().command); cmd.addCommandLineAsArgs(runControl()->runnable().command);
} else { } else {
// Something resembling gdbserver // Something resembling gdbserver
if (d->serverUseMulti) if (m_runParameters.serverUseMulti())
cmd.addArg("--multi"); cmd.addArg("--multi");
if (d->serverAttachPid.isValid()) if (m_runParameters.serverAttachPid().isValid())
cmd.addArg("--attach"); cmd.addArg("--attach");
const auto port = runControl()->debugChannel().port(); const auto port = runControl()->debugChannel().port();
@@ -713,8 +710,8 @@ void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup()
d->debuggerServerProc.setExtraData(extraData); d->debuggerServerProc.setExtraData(extraData);
} }
if (d->serverAttachPid.isValid()) if (m_runParameters.serverAttachPid().isValid())
cmd.addArg(QString::number(d->serverAttachPid.pid())); cmd.addArg(QString::number(m_runParameters.serverAttachPid().pid()));
} }
} }
@@ -745,21 +742,13 @@ void DebuggerRunTool::startDebugServerIfNeededAndContinueStartup()
connect(&d->debuggerServerProc, &Process::done, this, [this] { connect(&d->debuggerServerProc, &Process::done, this, [this] {
if (d->terminalProc.error() != QProcess::UnknownError) if (d->terminalProc.error() != QProcess::UnknownError)
reportFailure(d->terminalProc.errorString()); reportFailure(d->terminalProc.errorString());
if (d->terminalProc.error() != QProcess::FailedToStart && d->serverEssential) if (d->terminalProc.error() != QProcess::FailedToStart && m_runParameters.serverEssential())
reportDone(); reportDone();
}); });
d->debuggerServerProc.start(); d->debuggerServerProc.start();
} }
void DebuggerRunTool::setUseDebugServer(ProcessHandle attachPid, bool essential, bool useMulti)
{
runControl()->requestDebugChannel();
d->serverAttachPid = attachPid;
d->serverEssential = essential;
d->serverUseMulti = useMulti;
}
// DebuggerRunWorkerFactory // DebuggerRunWorkerFactory
DebuggerRunWorkerFactory::DebuggerRunWorkerFactory() DebuggerRunWorkerFactory::DebuggerRunWorkerFactory()

View File

@@ -30,8 +30,6 @@ public:
void start() override; void start() override;
void stop() override; void stop() override;
void setUseDebugServer(Utils::ProcessHandle attachPid, bool essential, bool useMulti);
void kickoffTerminalProcess(); void kickoffTerminalProcess();
void interruptTerminal(); void interruptTerminal();

View File

@@ -45,13 +45,13 @@ public:
RemoteLinuxDebugWorkerFactory() RemoteLinuxDebugWorkerFactory()
{ {
setProducer([](RunControl *rc) { setProducer([](RunControl *rc) {
rc->requestDebugChannel();
auto debugger = new DebuggerRunTool(rc, DebuggerRunTool::DoNotAllowTerminal); auto debugger = new DebuggerRunTool(rc, DebuggerRunTool::DoNotAllowTerminal);
DebuggerRunParameters &rp = debugger->runParameters(); DebuggerRunParameters &rp = debugger->runParameters();
debugger->setId("RemoteLinuxDebugWorker"); debugger->setId("RemoteLinuxDebugWorker");
debugger->setupPortsGatherer(); debugger->setupPortsGatherer();
debugger->addQmlServerInferiorCommandLineArgumentIfNeeded(); debugger->addQmlServerInferiorCommandLineArgumentIfNeeded();
debugger->setUseDebugServer({}, true, true);
rp.setStartMode(AttachToRemoteServer); rp.setStartMode(AttachToRemoteServer);
rp.setCloseMode(KillAndExitMonitorAtClose); rp.setCloseMode(KillAndExitMonitorAtClose);