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