diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index 0a281d4fbcf70efdfc42e2f881c2930e133cb60e..75e84b962054a6a97eacd7b670272b0082244c25 100644 --- a/src/plugins/debugger/debuggeractions.cpp +++ b/src/plugins/debugger/debuggeractions.cpp @@ -509,6 +509,11 @@ DebuggerSettings *theDebuggerSettings() item->setSettingsKey("DebugMode", "BuildDumpersOnTheFly"); item->setCheckable(true); + item = new DebuggerAction(instance); + instance->insertItem(UseQtDumpers, item); + item->setSettingsKey("DebugMode", "UseQtDumpers"); + item->setCheckable(true); + item = new DebuggerAction(instance); instance->insertItem(UsePrebuiltDumpers, item); item->setSettingsKey("DebugMode", "UsePrebuiltDumpers"); diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h index 75029ab9526e1d492432e4ea0aa09914ed1a2893..5d7e5354d239c332baab76fb0a0d002f0b2fc31b 100644 --- a/src/plugins/debugger/debuggeractions.h +++ b/src/plugins/debugger/debuggeractions.h @@ -155,6 +155,7 @@ enum DebuggerActionCode RecheckDumpers, UsePrebuiltDumpers, + UseQtDumpers, PrebuiltDumpersLocation, BuildDumpersOnTheFly, UseDumpers, diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h index 414ef429631d8c588283e6be5574d86a3c4b36e1..4d9351d951d459ccd5fe0f565f4c52eb89841dc8 100644 --- a/src/plugins/debugger/debuggermanager.h +++ b/src/plugins/debugger/debuggermanager.h @@ -331,6 +331,7 @@ public: QString m_workingDir; QString m_buildDir; QStringList m_processArgs; + QString m_dumperLib; int m_attachedPID; bool m_useTerminal; diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index cc3c0f01d7f80b86e1917edf5bf60e7a54d25a3c..34152a52ca5bff419fb17cb495e78b94f44627f6 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -381,6 +381,8 @@ QWidget *DumperOptionPage::createPage(QWidget *parent) connect(m_ui.radioButtonUsePrebuiltDumpers, SIGNAL(toggled(bool)), m_ui.dumperLocationChooser, SLOT(setEnabled(bool))); + theDebuggerAction(UseQtDumpers) + ->connectWidget(m_ui.radioButtonUseQtDumpers); theDebuggerAction(UsePrebuiltDumpers) ->connectWidget(m_ui.radioButtonUsePrebuiltDumpers); theDebuggerAction(BuildDumpersOnTheFly) @@ -414,6 +416,7 @@ void DumperOptionPage::apply() QSettings *s = ICore::instance()->settings(); theDebuggerAction(UseDumpers)->apply(s); + theDebuggerAction(UseQtDumpers)->apply(s); theDebuggerAction(UsePrebuiltDumpers)->apply(s); theDebuggerAction(BuildDumpersOnTheFly)->apply(s); theDebuggerAction(PrebuiltDumpersLocation)->apply(s); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index e5eefdc096e102576e64e730c13d66a259a10e51..0153ef67531aa240036ace56dbe1f937e99f517f 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -128,6 +128,7 @@ void DebuggerRunControl::start() m_manager->m_environment = rc->environment().toStringList(); m_manager->m_workingDir = rc->workingDirectory(); m_manager->m_processArgs = rc->commandLineArguments(); + m_manager->m_dumperLib = rc->dumperLibrary(); m_manager->m_buildDir = project->buildDirectory(project->activeBuildConfiguration()); m_manager->m_useTerminal = rc->runMode() == ApplicationRunConfiguration::Console; diff --git a/src/plugins/debugger/dumperoptionpage.ui b/src/plugins/debugger/dumperoptionpage.ui index 0219fe898b5acec3b5ad85d1ca9a6ec6cf997658..ce65d701f461a43e01b0ef7a0a6a4fe358bbce01 100644 --- a/src/plugins/debugger/dumperoptionpage.ui +++ b/src/plugins/debugger/dumperoptionpage.ui @@ -21,6 +21,13 @@ </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> + <widget class="QRadioButton" name="radioButtonUseQtDumpers"> + <property name="text"> + <string>Use Qt dumpers</string> + </property> + </widget> + </item> + <item row="1" column="0"> <widget class="QRadioButton" name="radioButtonBuildDumpersOnTheFly"> <property name="toolTip"> <string>This is the slowest but safest option.</string> @@ -30,14 +37,14 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QRadioButton" name="radioButtonUsePrebuiltDumpers"> <property name="text"> <string>Load pre-built data dumpers</string> </property> </widget> </item> - <item row="2" column="0"> + <item row="3" column="0"> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <spacer name="horizontalSpacer"> diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp index e34d8c50290cd7f4743895a9106e49b9d255eb22..1e92a07cb5b2e63da1fd50588b34a85939eb36e1 100644 --- a/src/plugins/debugger/gdbengine.cpp +++ b/src/plugins/debugger/gdbengine.cpp @@ -3993,6 +3993,8 @@ QString GdbEngine::dumperLibraryName() const { if (theDebuggerAction(UsePrebuiltDumpers)->value().toBool()) return theDebuggerAction(PrebuiltDumpersLocation)->value().toString(); + if (theDebuggerAction(UseQtDumpers)->value().toBool()) + return q->m_dumperLib; #if defined(Q_OS_WIN) return q->m_buildDir + "/qtc-gdbmacros/debug/gdbmacros.dll"; #elif defined(Q_OS_MAC) @@ -4010,6 +4012,7 @@ void GdbEngine::tryLoadCustomDumpers() PENDING_DEBUG("TRY LOAD CUSTOM DUMPERS"); m_dataDumperState = DataDumperUnavailable; QString lib = dumperLibraryName(); + //qDebug() << "DUMPERLIB: " << lib; if (!QFileInfo(lib).exists()) { debugMessage(QString("DEBUG HELPER LIBRARY IS NOT USABLE: " diff --git a/src/plugins/debugger/watchutils.cpp b/src/plugins/debugger/watchutils.cpp index c679857ab88879ee43f102092b2019d1dcfde6e1..993bd1a914a53c78015db8f5c1918010c53156f0 100644 --- a/src/plugins/debugger/watchutils.cpp +++ b/src/plugins/debugger/watchutils.cpp @@ -38,7 +38,7 @@ namespace Internal { QString dotEscape(QString str) { - const QChar dot = QLatin1Char(','); + const QChar dot = QLatin1Char('.'); str.replace(QLatin1Char(' '), dot); str.replace(QLatin1Char('\\'), dot); str.replace(QLatin1Char('/'), dot); diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp index 6ab3cd96901caadc6e28da0bee8b5d94a042b7f5..4115a49a50853b155ed20815b97609922075f05b 100644 --- a/tests/manual/gdbdebugger/simple/app.cpp +++ b/tests/manual/gdbdebugger/simple/app.cpp @@ -710,7 +710,6 @@ void testQString() str += " World "; str += " World "; str += " World "; - str.append(s); } void testQString3()