forked from qt-creator/qt-creator
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:
@@ -44,6 +44,7 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
#include <QTextEdit>
|
||||||
|
|
||||||
const char USE_CPP_DEBUGGER_KEY[] = "RunConfiguration.UseCppDebugger";
|
const char USE_CPP_DEBUGGER_KEY[] = "RunConfiguration.UseCppDebugger";
|
||||||
const char USE_CPP_DEBUGGER_AUTO_KEY[] = "RunConfiguration.UseCppDebuggerAuto";
|
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 USE_QML_DEBUGGER_AUTO_KEY[] = "RunConfiguration.UseQmlDebuggerAuto";
|
||||||
const char QML_DEBUG_SERVER_PORT_KEY[] = "RunConfiguration.QmlDebugServerPort";
|
const char QML_DEBUG_SERVER_PORT_KEY[] = "RunConfiguration.QmlDebugServerPort";
|
||||||
const char USE_MULTIPROCESS_KEY[] = "RunConfiguration.UseMultiProcess";
|
const char USE_MULTIPROCESS_KEY[] = "RunConfiguration.UseMultiProcess";
|
||||||
|
const char OVERRIDE_STARTUP_KEY[] = "RunConfiguration.OverrideDebuggerStartup";
|
||||||
|
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
|
|
||||||
@@ -87,6 +89,8 @@ public:
|
|||||||
QSpinBox *m_debugServerPort;
|
QSpinBox *m_debugServerPort;
|
||||||
QLabel *m_debugServerPortLabel;
|
QLabel *m_debugServerPortLabel;
|
||||||
QLabel *m_qmlDebuggerInfoLabel;
|
QLabel *m_qmlDebuggerInfoLabel;
|
||||||
|
QLabel *m_overrideStartupLabel;
|
||||||
|
QTextEdit *m_overrideStartupText;
|
||||||
QCheckBox *m_useMultiProcess;
|
QCheckBox *m_useMultiProcess;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -108,6 +112,9 @@ DebuggerRunConfigWidget::DebuggerRunConfigWidget(DebuggerRunConfigurationAspect
|
|||||||
"qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html"
|
"qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html"
|
||||||
"\">What are the prerequisites?</a>"));
|
"\">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");
|
static const QByteArray env = qgetenv("QTC_DEBUGGER_MULTIPROCESS");
|
||||||
m_useMultiProcess =
|
m_useMultiProcess =
|
||||||
new QCheckBox(tr("Enable Debugging of Subprocesses"), this);
|
new QCheckBox(tr("Enable Debugging of Subprocesses"), this);
|
||||||
@@ -123,6 +130,8 @@ DebuggerRunConfigWidget::DebuggerRunConfigWidget(DebuggerRunConfigurationAspect
|
|||||||
this, &DebuggerRunConfigWidget::useCppDebuggerClicked);
|
this, &DebuggerRunConfigWidget::useCppDebuggerClicked);
|
||||||
connect(m_debugServerPort, QOverload<int>::of(&QSpinBox::valueChanged),
|
connect(m_debugServerPort, QOverload<int>::of(&QSpinBox::valueChanged),
|
||||||
this, &DebuggerRunConfigWidget::qmlDebugServerPortChanged);
|
this, &DebuggerRunConfigWidget::qmlDebugServerPortChanged);
|
||||||
|
connect(m_overrideStartupText, &QTextEdit::textChanged,
|
||||||
|
this, [this] { m_aspect->d.overrideStartup = m_overrideStartupText->toPlainText(); });
|
||||||
connect(m_useMultiProcess, &QAbstractButton::toggled,
|
connect(m_useMultiProcess, &QAbstractButton::toggled,
|
||||||
this, &DebuggerRunConfigWidget::useMultiProcessToggled);
|
this, &DebuggerRunConfigWidget::useMultiProcessToggled);
|
||||||
|
|
||||||
@@ -134,11 +143,12 @@ DebuggerRunConfigWidget::DebuggerRunConfigWidget(DebuggerRunConfigurationAspect
|
|||||||
qmlLayout->addWidget(m_qmlDebuggerInfoLabel);
|
qmlLayout->addWidget(m_qmlDebuggerInfoLabel);
|
||||||
qmlLayout->addStretch();
|
qmlLayout->addStretch();
|
||||||
|
|
||||||
auto layout = new QVBoxLayout;
|
auto layout = new QFormLayout;
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->addWidget(m_useCppDebugger);
|
layout->addRow(m_useCppDebugger);
|
||||||
layout->addLayout(qmlLayout);
|
layout->addRow(qmlLayout);
|
||||||
layout->addWidget(m_useMultiProcess);
|
layout->addRow(m_overrideStartupLabel, m_overrideStartupText);
|
||||||
|
layout->addRow(m_useMultiProcess);
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,6 +176,8 @@ void DebuggerRunConfigWidget::update()
|
|||||||
|
|
||||||
m_debugServerPortLabel->setVisible(!m_aspect->isQmlDebuggingSpinboxSuppressed());
|
m_debugServerPortLabel->setVisible(!m_aspect->isQmlDebuggingSpinboxSuppressed());
|
||||||
m_debugServerPort->setVisible(!m_aspect->isQmlDebuggingSpinboxSuppressed());
|
m_debugServerPort->setVisible(!m_aspect->isQmlDebuggingSpinboxSuppressed());
|
||||||
|
|
||||||
|
m_overrideStartupText->setText(m_aspect->overrideStartup());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerRunConfigWidget::qmlDebugServerPortChanged(int port)
|
void DebuggerRunConfigWidget::qmlDebugServerPortChanged(int port)
|
||||||
@@ -279,6 +291,11 @@ bool DebuggerRunConfigurationAspect::isQmlDebuggingSpinboxSuppressed() const
|
|||||||
return dev->canAutoDetectPorts();
|
return dev->canAutoDetectPorts();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString DebuggerRunConfigurationAspect::overrideStartup() const
|
||||||
|
{
|
||||||
|
return d.overrideStartup;
|
||||||
|
}
|
||||||
|
|
||||||
int DebuggerRunConfigurationAspect::portsUsedByDebugger() const
|
int DebuggerRunConfigurationAspect::portsUsedByDebugger() const
|
||||||
{
|
{
|
||||||
int ports = 0;
|
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(USE_QML_DEBUGGER_AUTO_KEY, d.useQmlDebugger == AutoEnabledLanguage);
|
||||||
map.insert(QML_DEBUG_SERVER_PORT_KEY, d.qmlDebugServerPort);
|
map.insert(QML_DEBUG_SERVER_PORT_KEY, d.qmlDebugServerPort);
|
||||||
map.insert(USE_MULTIPROCESS_KEY, d.useMultiProcess);
|
map.insert(USE_MULTIPROCESS_KEY, d.useMultiProcess);
|
||||||
|
map.insert(OVERRIDE_STARTUP_KEY, d.overrideStartup);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerRunConfigurationAspect::fromMap(const QVariantMap &map)
|
void DebuggerRunConfigurationAspect::fromMap(const QVariantMap &map)
|
||||||
@@ -314,6 +332,7 @@ void DebuggerRunConfigurationAspect::fromMap(const QVariantMap &map)
|
|||||||
d.useQmlDebugger = useQml ? EnabledLanguage : DisabledLanguage;
|
d.useQmlDebugger = useQml ? EnabledLanguage : DisabledLanguage;
|
||||||
}
|
}
|
||||||
d.useMultiProcess = map.value(USE_MULTIPROCESS_KEY, false).toBool();
|
d.useMultiProcess = map.value(USE_MULTIPROCESS_KEY, false).toBool();
|
||||||
|
d.overrideStartup = map.value(OVERRIDE_STARTUP_KEY).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Debugger
|
} // namespace Debugger
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ public:
|
|||||||
uint qmlDebugServerPort = QML_DEFAULT_DEBUG_SERVER_PORT;
|
uint qmlDebugServerPort = QML_DEFAULT_DEBUG_SERVER_PORT;
|
||||||
|
|
||||||
bool useMultiProcess = false;
|
bool useMultiProcess = false;
|
||||||
|
QString overrideStartup;
|
||||||
};
|
};
|
||||||
|
|
||||||
class DEBUGGER_EXPORT DebuggerRunConfigurationAspect
|
class DEBUGGER_EXPORT DebuggerRunConfigurationAspect
|
||||||
@@ -70,6 +71,7 @@ public:
|
|||||||
bool useMultiProcess() const;
|
bool useMultiProcess() const;
|
||||||
void setUseMultiProcess(bool on);
|
void setUseMultiProcess(bool on);
|
||||||
bool isQmlDebuggingSpinboxSuppressed() const;
|
bool isQmlDebuggingSpinboxSuppressed() const;
|
||||||
|
QString overrideStartup() const;
|
||||||
|
|
||||||
int portsUsedByDebugger() const;
|
int portsUsedByDebugger() const;
|
||||||
|
|
||||||
|
|||||||
@@ -928,6 +928,7 @@ DebuggerRunTool::DebuggerRunTool(RunControl *runControl, AllowTerminal allowTerm
|
|||||||
m_runParameters.cppEngineType = NoEngineType;
|
m_runParameters.cppEngineType = NoEngineType;
|
||||||
m_runParameters.isQmlDebugging = aspect->useQmlDebugger();
|
m_runParameters.isQmlDebugging = aspect->useQmlDebugger();
|
||||||
m_runParameters.multiProcess = aspect->useMultiProcess();
|
m_runParameters.multiProcess = aspect->useMultiProcess();
|
||||||
|
m_runParameters.additionalStartupCommands = aspect->overrideStartup();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_runParameters.inferior = runnable();
|
m_runParameters.inferior = runnable();
|
||||||
|
|||||||
Reference in New Issue
Block a user