diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-11-06 10:11:57 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-11-06 12:29:02 +0100 |
commit | 518b6fcebc6eb723560d39025f177125c3f2fdb2 (patch) | |
tree | c5b631334a37db94d7916de6abd5d05293c0549f | |
parent | e7b6108934904b38eadf92b2b0d92e48d3fe4513 (diff) | |
download | qt-creator-518b6fcebc6eb723560d39025f177125c3f2fdb2.tar.gz |
CDB: Add setting to ignore first-chance exceptions.
- Add setting for command line option -x.
Task-number: QTCREATORBUG-8141
Change-Id: Id53b9d7d207e2e2c86886db9d0a8c9f5348b659b
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/plugins/debugger/cdb/cdbengine.cpp | 2 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdboptions.cpp | 12 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdboptions.h | 2 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdboptionspage.cpp | 2 | ||||
-rw-r--r-- | src/plugins/debugger/cdb/cdboptionspagewidget.ui | 16 |
5 files changed, 32 insertions, 2 deletions
diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index fe0b96a7e8..2ac44c5188 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -668,6 +668,8 @@ bool CdbEngine::launchCDB(const DebuggerStartParameters &sp, QString *errorMessa << QLatin1String(".idle_cmd ") + QString::fromLatin1(m_extensionCommandPrefixBA) + QLatin1String("idle"); if (sp.useTerminal) // Separate console arguments << QLatin1String("-2"); + if (m_options->ignoreFirstChanceAccessViolation) + arguments << QLatin1String("-x"); if (!m_options->symbolPaths.isEmpty()) arguments << QLatin1String("-y") << m_options->symbolPaths.join(QString(QLatin1Char(';'))); if (!m_options->sourcePaths.isEmpty()) diff --git a/src/plugins/debugger/cdb/cdboptions.cpp b/src/plugins/debugger/cdb/cdboptions.cpp index ea83f54656..6b890f8eab 100644 --- a/src/plugins/debugger/cdb/cdboptions.cpp +++ b/src/plugins/debugger/cdb/cdboptions.cpp @@ -39,13 +39,17 @@ static const char breakFunctionsKeyC[] = "BreakFunctions"; static const char additionalArgumentsKeyC[] = "AdditionalArguments"; static const char cdbConsoleKeyC[] = "CDB_Console"; static const char breakpointCorrectionKeyC[] = "BreakpointCorrection"; +static const char ignoreFirstChanceAccessViolationKeyC[] = "IgnoreFirstChanceAccessViolation"; namespace Debugger { namespace Internal { const char *CdbOptions::crtDbgReport = "CrtDbgReport"; -CdbOptions::CdbOptions() : cdbConsole(false), breakpointCorrection(true) +CdbOptions::CdbOptions() + : cdbConsole(false) + , breakpointCorrection(true) + , ignoreFirstChanceAccessViolation(false) { } @@ -58,7 +62,8 @@ void CdbOptions::clear() { symbolPaths.clear(); sourcePaths.clear(); - cdbConsole = false; + breakpointCorrection = true; + cdbConsole = ignoreFirstChanceAccessViolation = false; breakEvents.clear(); breakFunctions.clear(); } @@ -79,6 +84,7 @@ void CdbOptions::fromSettings(QSettings *s) breakFunctions = s->value(keyRoot + QLatin1String(breakFunctionsKeyC), QStringList()).toStringList(); cdbConsole = s->value(keyRoot + QLatin1String(cdbConsoleKeyC), QVariant(false)).toBool(); breakpointCorrection = s->value(keyRoot + QLatin1String(breakpointCorrectionKeyC), QVariant(true)).toBool(); + ignoreFirstChanceAccessViolation = s->value(keyRoot + QLatin1String(ignoreFirstChanceAccessViolationKeyC), false).toBool(); } void CdbOptions::toSettings(QSettings *s) const @@ -91,6 +97,7 @@ void CdbOptions::toSettings(QSettings *s) const s->setValue(QLatin1String(additionalArgumentsKeyC), additionalArguments); s->setValue(QLatin1String(cdbConsoleKeyC), QVariant(cdbConsole)); s->setValue(QLatin1String(breakpointCorrectionKeyC), QVariant(breakpointCorrection)); + s->setValue(QLatin1String(ignoreFirstChanceAccessViolationKeyC), QVariant(ignoreFirstChanceAccessViolation)); s->endGroup(); } @@ -98,6 +105,7 @@ bool CdbOptions::equals(const CdbOptions &rhs) const { return cdbConsole == rhs.cdbConsole && breakpointCorrection == rhs.breakpointCorrection + && ignoreFirstChanceAccessViolation == rhs.ignoreFirstChanceAccessViolation && additionalArguments == rhs.additionalArguments && symbolPaths == rhs.symbolPaths && sourcePaths == rhs.sourcePaths diff --git a/src/plugins/debugger/cdb/cdboptions.h b/src/plugins/debugger/cdb/cdboptions.h index 14a29482b4..f0bf82ea7d 100644 --- a/src/plugins/debugger/cdb/cdboptions.h +++ b/src/plugins/debugger/cdb/cdboptions.h @@ -66,6 +66,8 @@ public: bool cdbConsole; // Perform code-model based correction of breakpoint location. bool breakpointCorrection; + // Add -x to command line. + bool ignoreFirstChanceAccessViolation; static const char *crtDbgReport; }; diff --git a/src/plugins/debugger/cdb/cdboptionspage.cpp b/src/plugins/debugger/cdb/cdboptionspage.cpp index 1965ec9e43..77190c7965 100644 --- a/src/plugins/debugger/cdb/cdboptionspage.cpp +++ b/src/plugins/debugger/cdb/cdboptionspage.cpp @@ -253,6 +253,7 @@ void CdbOptionsPageWidget::setOptions(CdbOptions &o) m_ui.additionalArgumentsLineEdit->setText(o.additionalArguments); setSymbolPaths(o.symbolPaths); setSourcePaths(o.sourcePaths); + m_ui.ignoreFirstChanceAccessViolationCheckBox->setChecked(o.ignoreFirstChanceAccessViolation); m_breakEventWidget->setBreakEvents(o.breakEvents); m_ui.consoleCheckBox->setChecked(o.cdbConsole); m_ui.breakpointCorrectionCheckBox->setChecked(o.breakpointCorrection); @@ -265,6 +266,7 @@ CdbOptions CdbOptionsPageWidget::options() const rc.additionalArguments = m_ui.additionalArgumentsLineEdit->text().trimmed(); rc.symbolPaths = m_symbolPaths; rc.sourcePaths = m_sourcePaths; + rc.ignoreFirstChanceAccessViolation = m_ui.ignoreFirstChanceAccessViolationCheckBox->isChecked(); rc.breakEvents = m_breakEventWidget->breakEvents(); rc.cdbConsole = m_ui.consoleCheckBox->isChecked(); rc.breakpointCorrection = m_ui.breakpointCorrectionCheckBox->isChecked(); diff --git a/src/plugins/debugger/cdb/cdboptionspagewidget.ui b/src/plugins/debugger/cdb/cdboptionspagewidget.ui index f8a3027b41..647449105f 100644 --- a/src/plugins/debugger/cdb/cdboptionspagewidget.ui +++ b/src/plugins/debugger/cdb/cdboptionspagewidget.ui @@ -138,6 +138,22 @@ </layout> </item> <item> + <widget class="QGroupBox" name="variousGroupBox"> + <property name="title"> + <string>Various</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QCheckBox" name="ignoreFirstChanceAccessViolationCheckBox"> + <property name="text"> + <string>Ignore first chance access violations</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> |