summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2011-05-30 16:01:50 +0200
committerhjk <qthjk@ovi.com>2011-05-30 16:00:22 +0200
commitcf62837fab55331217b3c7eb87c9ca84d36117ad (patch)
treeb4b4a2d6062d93c6b0ef03c1ab6fcba35e072132 /src
parent7295d50591be94a79bfd4c2ac5e159091fb2489c (diff)
downloadqt-creator-cf62837fab55331217b3c7eb87c9ca84d36117ad.tar.gz
debugger: implement an option to stop on qWarnings (gdb only)
Task-number: QTCREATORBUG-842 Change-Id: If1a7d0cd9dfaa5b6b4915fa67a150683cf6786b9 Reviewed-on: http://codereview.qt.nokia.com/226 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/debugger/debuggeractions.cpp8
-rw-r--r--src/plugins/debugger/debuggeractions.h1
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp7
-rw-r--r--src/plugins/debugger/gdb/gdboptionspage.cpp2
-rw-r--r--src/plugins/debugger/gdb/gdboptionspage.ui7
5 files changed, 23 insertions, 2 deletions
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 5c3889a112..b36c4ddfbc 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -321,6 +321,14 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
item->setSettingsKey(debugModeGroup, QLatin1String("BreakOnCatch"));
insertItem(BreakOnCatch, item);
+ item = new SavedAction(this);
+ item->setText(tr("Break on \"qWarning\""));
+ item->setCheckable(true);
+ item->setDefaultValue(false);
+ item->setValue(false);
+ item->setSettingsKey(debugModeGroup, QLatin1String("BreakOnWarning"));
+ insertItem(BreakOnWarning, item);
+
//
// Settings
//
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 40502aaa36..9294bb55ec 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -150,6 +150,7 @@ enum DebuggerActionCode
SelectedPluginBreakpointsPattern,
BreakOnThrow,
BreakOnCatch,
+ BreakOnWarning,
// Registers
AlwaysAdjustRegistersColumnWidths,
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 58eed9bcfe..c3de36059c 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -4726,11 +4726,14 @@ void GdbEngine::handleNamespaceExtraction(const GdbResponse &response)
setQtNamespace(ns + "::");
}
- if (startParameters().startMode == AttachCore)
+ if (startParameters().startMode == AttachCore) {
notifyInferiorSetupOk(); // No breakpoints in core files.
- else
+ } else {
postCommand("-break-insert -f '" + qtNamespace() + "qFatal'",
CB(handleBreakOnQFatal));
+ if (debuggerCore()->boolSetting(BreakOnWarning))
+ postCommand("-break-insert -f '" + qtNamespace() + "qWarning'");
+ }
}
void GdbEngine::handleBreakOnQFatal(const GdbResponse &response)
diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp
index ccfa4aa11a..404a92e8c5 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.cpp
+++ b/src/plugins/debugger/gdb/gdboptionspage.cpp
@@ -94,6 +94,8 @@ QWidget *GdbOptionsPage::createPage(QWidget *parent)
m_ui->checkBoxTargetAsync);
m_group.insert(debuggerCore()->action(AdjustBreakpointLocations),
m_ui->checkBoxAdjustBreakpointLocations);
+ m_group.insert(debuggerCore()->action(BreakOnWarning),
+ m_ui->checkBoxBreakOnWarning);
m_group.insert(debuggerCore()->action(GdbWatchdogTimeout),
m_ui->spinBoxGdbWatchdogTimeout);
diff --git a/src/plugins/debugger/gdb/gdboptionspage.ui b/src/plugins/debugger/gdb/gdboptionspage.ui
index 2abf248de2..9445a0d837 100644
--- a/src/plugins/debugger/gdb/gdboptionspage.ui
+++ b/src/plugins/debugger/gdb/gdboptionspage.ui
@@ -123,6 +123,13 @@ on slow machines. In this case, the value should be increased.</string>
</widget>
</item>
<item row="7" column="0" colspan="2">
+ <widget class="QCheckBox" name="checkBoxBreakOnWarning">
+ <property name="text">
+ <string>Stop when a qWarning is issued</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxEnableReverseDebugging">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Selecting this enables reverse debugging.&lt;/p&gt;&lt;.p&gt;&lt;b&gt;Note:&lt;/b&gt;This feature is very slow and unstable on the GDB side. It exhibits unpredictable behaviour when going backwards over system calls and is very likely to destroy your debugging session.&lt;/p&gt;&lt;body&gt;&lt;/html&gt;</string>