forked from qt-creator/qt-creator
Debugger: Get rid of setUseDebugServer()
Move fields into DebuggerRunParameters. Change-Id: Ieb43aede46a6a401da06dbbf2cd43d71ba56fed3 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -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 {
|
||||||
|
@@ -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);
|
||||||
|
@@ -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()
|
||||||
|
@@ -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();
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user