Debugger: Add a per-runconfig way to add debugger startup command

Task-number: QTCREATORBUG-22979
Change-Id: I225b6cd1ee1dd3195bda3de4de72880d76e8cd37
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2019-09-30 11:26:32 +02:00
parent aad6ad8c10
commit a574706d29
3 changed files with 26 additions and 4 deletions

View File

@@ -44,6 +44,7 @@
#include <QDebug>
#include <QFormLayout>
#include <QLabel>
#include <QTextEdit>
const char USE_CPP_DEBUGGER_KEY[] = "RunConfiguration.UseCppDebugger";
const char USE_CPP_DEBUGGER_AUTO_KEY[] = "RunConfiguration.UseCppDebuggerAuto";
@@ -51,6 +52,7 @@ const char USE_QML_DEBUGGER_KEY[] = "RunConfiguration.UseQmlDebugger";
const char USE_QML_DEBUGGER_AUTO_KEY[] = "RunConfiguration.UseQmlDebuggerAuto";
const char QML_DEBUG_SERVER_PORT_KEY[] = "RunConfiguration.QmlDebugServerPort";
const char USE_MULTIPROCESS_KEY[] = "RunConfiguration.UseMultiProcess";
const char OVERRIDE_STARTUP_KEY[] = "RunConfiguration.OverrideDebuggerStartup";
using namespace ProjectExplorer;
@@ -87,6 +89,8 @@ public:
QSpinBox *m_debugServerPort;
QLabel *m_debugServerPortLabel;
QLabel *m_qmlDebuggerInfoLabel;
QLabel *m_overrideStartupLabel;
QTextEdit *m_overrideStartupText;
QCheckBox *m_useMultiProcess;
};
@@ -108,6 +112,9 @@ DebuggerRunConfigWidget::DebuggerRunConfigWidget(DebuggerRunConfigurationAspect
"qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html"
"\">What are the prerequisites?</a>"));
m_overrideStartupLabel = new QLabel(tr("Additional startup commands:"), this);
m_overrideStartupText = new QTextEdit(this);
static const QByteArray env = qgetenv("QTC_DEBUGGER_MULTIPROCESS");
m_useMultiProcess =
new QCheckBox(tr("Enable Debugging of Subprocesses"), this);
@@ -123,6 +130,8 @@ DebuggerRunConfigWidget::DebuggerRunConfigWidget(DebuggerRunConfigurationAspect
this, &DebuggerRunConfigWidget::useCppDebuggerClicked);
connect(m_debugServerPort, QOverload<int>::of(&QSpinBox::valueChanged),
this, &DebuggerRunConfigWidget::qmlDebugServerPortChanged);
connect(m_overrideStartupText, &QTextEdit::textChanged,
this, [this] { m_aspect->d.overrideStartup = m_overrideStartupText->toPlainText(); });
connect(m_useMultiProcess, &QAbstractButton::toggled,
this, &DebuggerRunConfigWidget::useMultiProcessToggled);
@@ -134,11 +143,12 @@ DebuggerRunConfigWidget::DebuggerRunConfigWidget(DebuggerRunConfigurationAspect
qmlLayout->addWidget(m_qmlDebuggerInfoLabel);
qmlLayout->addStretch();
auto layout = new QVBoxLayout;
auto layout = new QFormLayout;
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(m_useCppDebugger);
layout->addLayout(qmlLayout);
layout->addWidget(m_useMultiProcess);
layout->addRow(m_useCppDebugger);
layout->addRow(qmlLayout);
layout->addRow(m_overrideStartupLabel, m_overrideStartupText);
layout->addRow(m_useMultiProcess);
setLayout(layout);
}
@@ -166,6 +176,8 @@ void DebuggerRunConfigWidget::update()
m_debugServerPortLabel->setVisible(!m_aspect->isQmlDebuggingSpinboxSuppressed());
m_debugServerPort->setVisible(!m_aspect->isQmlDebuggingSpinboxSuppressed());
m_overrideStartupText->setText(m_aspect->overrideStartup());
}
void DebuggerRunConfigWidget::qmlDebugServerPortChanged(int port)
@@ -279,6 +291,11 @@ bool DebuggerRunConfigurationAspect::isQmlDebuggingSpinboxSuppressed() const
return dev->canAutoDetectPorts();
}
QString DebuggerRunConfigurationAspect::overrideStartup() const
{
return d.overrideStartup;
}
int DebuggerRunConfigurationAspect::portsUsedByDebugger() const
{
int ports = 0;
@@ -297,6 +314,7 @@ void DebuggerRunConfigurationAspect::toMap(QVariantMap &map) const
map.insert(USE_QML_DEBUGGER_AUTO_KEY, d.useQmlDebugger == AutoEnabledLanguage);
map.insert(QML_DEBUG_SERVER_PORT_KEY, d.qmlDebugServerPort);
map.insert(USE_MULTIPROCESS_KEY, d.useMultiProcess);
map.insert(OVERRIDE_STARTUP_KEY, d.overrideStartup);
}
void DebuggerRunConfigurationAspect::fromMap(const QVariantMap &map)
@@ -314,6 +332,7 @@ void DebuggerRunConfigurationAspect::fromMap(const QVariantMap &map)
d.useQmlDebugger = useQml ? EnabledLanguage : DisabledLanguage;
}
d.useMultiProcess = map.value(USE_MULTIPROCESS_KEY, false).toBool();
d.overrideStartup = map.value(OVERRIDE_STARTUP_KEY).toString();
}
} // namespace Debugger

View File

@@ -50,6 +50,7 @@ public:
uint qmlDebugServerPort = QML_DEFAULT_DEBUG_SERVER_PORT;
bool useMultiProcess = false;
QString overrideStartup;
};
class DEBUGGER_EXPORT DebuggerRunConfigurationAspect
@@ -70,6 +71,7 @@ public:
bool useMultiProcess() const;
void setUseMultiProcess(bool on);
bool isQmlDebuggingSpinboxSuppressed() const;
QString overrideStartup() const;
int portsUsedByDebugger() const;

View File

@@ -928,6 +928,7 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, AllowTerminal allowTerm
m_runParameters.cppEngineType = NoEngineType;
m_runParameters.isQmlDebugging = aspect->useQmlDebugger();
m_runParameters.multiProcess = aspect->useMultiProcess();
m_runParameters.additionalStartupCommands = aspect->overrideStartup();
}
m_runParameters.inferior = runnable();