summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/gdb/gdboptionspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/debugger/gdb/gdboptionspage.cpp')
-rw-r--r--src/plugins/debugger/gdb/gdboptionspage.cpp55
1 files changed, 50 insertions, 5 deletions
diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp
index 0d023f1c09..014db0cf01 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.cpp
+++ b/src/plugins/debugger/gdb/gdboptionspage.cpp
@@ -76,9 +76,13 @@ public:
QCheckBox *checkBoxBreakOnAbort;
QCheckBox *checkBoxEnableReverseDebugging;
QCheckBox *checkBoxAttemptQuickStart;
+ QCheckBox *checkBoxMultiInferior;
+ QCheckBox *checkBoxIntelFlavor;
QGroupBox *groupBoxStartupCommands;
QTextEdit *textEditStartupCommands;
+ QGroupBox *groupBoxPostAttachCommands;
+ QTextEdit *textEditPostAttachCommands;
//QGroupBox *groupBoxPluginDebugging;
//QRadioButton *radioButtonAllPluginBreakpoints;
@@ -183,6 +187,7 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
"of debug information such as <i>/usr/src/debug</i> "
"when starting GDB.</body></html>"));
+ // #fixme: 2.7 Move to common settings page.
checkBoxBreakOnWarning = new QCheckBox(groupBoxGeneral);
checkBoxBreakOnWarning->setText(CommonOptionsPage::msgSetBreakpointAtFunction("qWarning"));
checkBoxBreakOnWarning->setToolTip(CommonOptionsPage::msgSetBreakpointAtFunctionToolTip("qWarning"));
@@ -210,13 +215,30 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
"This can result in faster startup times at the price of not being able to "
"set breakpoints by file and number.</body></html>"));
+ checkBoxMultiInferior = new QCheckBox(groupBoxGeneral);
+ checkBoxMultiInferior->setText(GdbOptionsPage::tr("Debug all children"));
+ checkBoxMultiInferior->setToolTip(GdbOptionsPage::tr(
+ "<html><head/><body>Keep debugging all children after a fork."
+ "</body></html>"));
+
+ checkBoxIntelFlavor = new QCheckBox(groupBoxGeneral);
+ checkBoxIntelFlavor->setText(GdbOptionsPage::tr("Use Intel style disassembly"));
+ checkBoxIntelFlavor->setToolTip(GdbOptionsPage::tr(
+ "<html><head/><body>GDB shows by default AT&&T style disassembly."
+ "</body></html>"));
+
groupBoxStartupCommands = new QGroupBox(this);
groupBoxStartupCommands->setTitle(GdbOptionsPage::tr("Additional Startup Commands"));
groupBoxStartupCommands->setToolTip(GdbOptionsPage::tr(
"<html><head/><body><p>GDB commands entered here will be executed after "
"GDB has been started and the debugging helpers have been initialized.</p>"
"<p>You can add commands to load further debugging helpers here, or "
- "modify existing ones.</p><p>To execute arbitrary Python scripts, "
+ "modify existing ones.</p>"
+ "<p>To execute simple Python commands, prefix them with \"python\".</p>"
+ "<p>To execute sequences of Python commands spanning multiple lines "
+ "prepend the block with \"python\" on a separate line, and append "
+ "\"end\" on a separate line.</p>"
+ "<p>To execute arbitrary Python scripts, "
"use <i>python execfile('/path/to/script.py')</i>.</p>"
"</body></html>"));
@@ -224,6 +246,19 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
textEditStartupCommands->setAcceptRichText(false);
textEditStartupCommands->setToolTip(groupBoxStartupCommands->toolTip());
+ groupBoxPostAttachCommands = new QGroupBox(this);
+ groupBoxPostAttachCommands->setTitle(GdbOptionsPage::tr("Additional Attach Commands"));
+ groupBoxPostAttachCommands->setToolTip(GdbOptionsPage::tr(
+ "<html><head/><body><p>GDB commands entered here will be executed after "
+ "GDB has successfully attached to remote targets.</p>"
+ "<p>You can add commands to further set up the target here, "
+ "such as \"monitor reset\" or \"load\"."
+ "</body></html>"));
+
+ textEditPostAttachCommands = new QTextEdit(groupBoxPostAttachCommands);
+ textEditPostAttachCommands->setAcceptRichText(false);
+ textEditPostAttachCommands->setToolTip(groupBoxPostAttachCommands->toolTip());
+
/*
groupBoxPluginDebugging = new QGroupBox(q);
groupBoxPluginDebugging->setTitle(GdbOptionsPage::tr(
@@ -258,6 +293,7 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
formLayout->addRow(checkBoxUseDynamicType);
formLayout->addRow(checkBoxLoadGdbInit);
formLayout->addRow(checkBoxWarnOnReleaseBuilds);
+ formLayout->addRow(checkBoxIntelFlavor);
formLayout->addRow(labelDangerous);
formLayout->addRow(checkBoxTargetAsync);
formLayout->addRow(checkBoxAutoEnrichParameters);
@@ -266,18 +302,23 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
formLayout->addRow(checkBoxBreakOnAbort);
formLayout->addRow(checkBoxEnableReverseDebugging);
formLayout->addRow(checkBoxAttemptQuickStart);
+ formLayout->addRow(checkBoxMultiInferior);
QGridLayout *startLayout = new QGridLayout(groupBoxStartupCommands);
startLayout->addWidget(textEditStartupCommands, 0, 0, 1, 1);
+ QGridLayout *postAttachLayout = new QGridLayout(groupBoxPostAttachCommands);
+ postAttachLayout->addWidget(textEditPostAttachCommands, 0, 0, 1, 1);
+
//QHBoxLayout *horizontalLayout = new QHBoxLayout();
//horizontalLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Preferred, QSizePolicy::Minimum));
//horizontalLayout->addWidget(labelSelectedPluginBreakpoints);
//horizontalLayout->addWidget(lineEditSelectedPluginBreakpointsPattern);
QGridLayout *gridLayout = new QGridLayout(this);
- gridLayout->addWidget(groupBoxGeneral, 0, 0);
- gridLayout->addWidget(groupBoxStartupCommands, 0, 1);
+ gridLayout->addWidget(groupBoxGeneral, 0, 0, 2, 1);
+ gridLayout->addWidget(groupBoxStartupCommands, 0, 1, 1, 1);
+ gridLayout->addWidget(groupBoxPostAttachCommands, 1, 1, 1, 1);
//gridLayout->addWidget(groupBoxStartupCommands, 0, 1, 1, 1);
//gridLayout->addWidget(radioButtonAllPluginBreakpoints, 0, 0, 1, 1);
@@ -289,6 +330,7 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
DebuggerCore *dc = debuggerCore();
group.insert(dc->action(GdbStartupCommands), textEditStartupCommands);
+ group.insert(dc->action(GdbPostAttachCommands), textEditPostAttachCommands);
group.insert(dc->action(LoadGdbInit), checkBoxLoadGdbInit);
group.insert(dc->action(AutoEnrichParameters), checkBoxAutoEnrichParameters);
group.insert(dc->action(UseDynamicType), checkBoxUseDynamicType);
@@ -300,6 +342,8 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
group.insert(dc->action(BreakOnAbort), checkBoxBreakOnAbort);
group.insert(dc->action(GdbWatchdogTimeout), spinBoxGdbWatchdogTimeout);
group.insert(dc->action(AttemptQuickStart), checkBoxAttemptQuickStart);
+ group.insert(dc->action(MultiInferior), checkBoxMultiInferior);
+ group.insert(dc->action(IntelFlavor), checkBoxIntelFlavor);
group.insert(dc->action(UseMessageBoxForSignals), checkBoxUseMessageBoxForSignals);
group.insert(dc->action(SkipKnownFrames), checkBoxSkipKnownFrames);
@@ -324,6 +368,7 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
<< sep << checkBoxUseMessageBoxForSignals->text()
<< sep << checkBoxAdjustBreakpointLocations->text()
<< sep << checkBoxAttemptQuickStart->text()
+ << sep << checkBoxMultiInferior->text()
// << sep << groupBoxPluginDebugging->title()
// << sep << radioButtonAllPluginBreakpoints->text()
// << sep << radioButtonSelectedPluginBreakpoints->text()
@@ -335,9 +380,9 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent)
GdbOptionsPage::GdbOptionsPage()
{
- setId(QLatin1String("M.Gdb"));
+ setId("M.Gdb");
setDisplayName(tr("GDB"));
- setCategory(QLatin1String(Constants::DEBUGGER_SETTINGS_CATEGORY));
+ setCategory(Constants::DEBUGGER_SETTINGS_CATEGORY);
setDisplayCategory(QCoreApplication::translate("Debugger", Constants::DEBUGGER_SETTINGS_TR_CATEGORY));
setCategoryIcon(QLatin1String(Constants::DEBUGGER_COMMON_SETTINGS_CATEGORY_ICON));
}