ProjectExplorer/Debugger: Add a 'Run as root' option for Unix hosts

For local run and GDB debug, with or without terminal.

Task-number: QTCREATORBUG-2831
Task-number: QTCREATORBUG-25330
Change-Id: I9b5d2156bcffea4f358474ecdbcad580a4419917
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2021-02-15 16:55:28 +01:00
parent 9bc9a4d376
commit c4b7da9ab2
15 changed files with 128 additions and 20 deletions

View File

@@ -395,6 +395,7 @@ void DebuggerRunTool::setUseTerminal(bool on)
if (on && !d->terminalRunner && !useCdbConsole) {
d->terminalRunner = new TerminalRunner(runControl(), m_runParameters.inferior);
d->terminalRunner->setRunAsRoot(m_runParameters.runAsRoot);
addStartDependency(d->terminalRunner);
}
if (!on && d->terminalRunner) {
@@ -402,6 +403,13 @@ void DebuggerRunTool::setUseTerminal(bool on)
}
}
void DebuggerRunTool::setRunAsRoot(bool on)
{
m_runParameters.runAsRoot = on;
if (d->terminalRunner)
d->terminalRunner->setRunAsRoot(on);
}
void DebuggerRunTool::setCommandsAfterConnect(const QString &commands)
{
m_runParameters.commandsAfterConnect = commands;
@@ -948,6 +956,8 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, AllowTerminal allowTerm
m_runParameters.symbolFile = symbolsAspect->filePath();
if (auto terminalAspect = runControl->aspect<TerminalAspect>())
m_runParameters.useTerminal = terminalAspect->useTerminal();
if (auto runAsRootAspect = runControl->aspect<RunAsRootAspect>())
m_runParameters.runAsRoot = runAsRootAspect->value();
Kit *kit = runControl->kit();
QTC_ASSERT(kit, return);