From 6c15d33cdc324b7a450dbe9f9310ba5172a276ec Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Thu, 26 Mar 2009 08:42:27 +0100 Subject: [PATCH] debugger: use dumpers build alongside Qt --- src/plugins/debugger/debuggeractions.cpp | 5 +++++ src/plugins/debugger/debuggeractions.h | 1 + src/plugins/debugger/debuggermanager.h | 1 + src/plugins/debugger/debuggerplugin.cpp | 3 +++ src/plugins/debugger/debuggerrunner.cpp | 1 + src/plugins/debugger/dumperoptionpage.ui | 11 +++++++++-- src/plugins/debugger/gdbengine.cpp | 3 +++ src/plugins/debugger/watchutils.cpp | 2 +- tests/manual/gdbdebugger/simple/app.cpp | 1 - 9 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp index 0a281d4fbcf..75e84b96205 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 75029ab9526..5d7e5354d23 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 414ef429631..4d9351d951d 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 cc3c0f01d7f..34152a52ca5 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 e5eefdc096e..0153ef67531 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 0219fe898b5..ce65d701f46 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 e34d8c50290..1e92a07cb5b 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 c679857ab88..993bd1a914a 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 6ab3cd96901..4115a49a508 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() -- GitLab