diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
index def15f0bba6ace9e25c2c89f0a5eda5679360d92..0f92c8a53ff9eb1b7b02673758921bd7f86b27d4 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
@@ -40,6 +40,8 @@
 #include <QtCore/QtConcurrentRun>
 #include <QtCore/QSettings>
 #include <QtGui/QFormLayout>
+#include <QtGui/QDesktopServices>
+#include <QtGui/QApplication>
 
 using namespace CMakeProjectManager::Internal;
 
@@ -134,7 +136,83 @@ QString CMakeManager::findCbpFile(const QDir &directory)
     return QString::null;
 }
 
+// This code is duplicated from qtversionmanager
+QString CMakeManager::qtVersionForQMake(const QString &qmakePath)
+{
+    QProcess qmake;
+    qmake.start(qmakePath, QStringList()<<"--version");
+    if (!qmake.waitForFinished())
+        return false;
+    QString output = qmake.readAllStandardOutput();
+    QRegExp regexp("(QMake version|Qmake version:)[\\s]*([\\d.]*)");
+    regexp.indexIn(output);
+    if (regexp.cap(2).startsWith("2.")) {
+        QRegExp regexp2("Using Qt version[\\s]*([\\d\\.]*)");
+        regexp2.indexIn(output);
+        return regexp2.cap(1);
+    }
+    return QString();
+}
 
+QString CMakeManager::findQtDir(const ProjectExplorer::Environment &env)
+{
+    QStringList possibleCommands;
+        // On windows noone has renamed qmake, right?
+#ifdef Q_OS_WIN
+    possibleCommands << "qmake.exe";
+#endif
+    // On unix some distributions renamed qmake to avoid clashes
+    possibleCommands << "qmake-qt4" << "qmake4" << "qmake";
+
+    QStringList paths = env.path();
+    foreach (const QString &path, paths) {
+        foreach (const QString &possibleCommand, possibleCommands) {
+            QFileInfo qmake(path + "/" + possibleCommand);
+            if (qmake.exists()) {
+                if (!qtVersionForQMake(qmake.absoluteFilePath()).isNull()) {
+                    QDir dir(qmake.absoluteDir());
+                    dir.cdUp();
+                    return dir.absolutePath();
+                }
+            }
+        }
+    }
+    return QString();
+}
+
+// This code is more or less duplicated in qtversionmanager
+QString CMakeManager::findDumperLibrary(const ProjectExplorer::Environment &env)
+{
+    static ProjectExplorer::Environment lastenv;
+    static QString lastpath;
+    if (lastenv == env)
+        return lastpath;
+    QString qtdir = findQtDir(env);
+    if (qtdir.isEmpty())
+        return QString();
+
+    uint hash = qHash(qtdir);
+    QStringList directories;
+    directories
+            << (qtdir + "/qtc-debugging-helper/")
+            << (QApplication::applicationDirPath() + "/../qtc-debugging-helper/" + QString::number(hash)) + "/"
+            << (QDesktopServices::storageLocation(QDesktopServices::DataLocation) + "/qtc-debugging-helper/" + QString::number(hash)) + "/";
+    foreach(const QString &directory, directories) {
+#if defined(Q_OS_WIN)
+        QFileInfo fi(directory + "debug/gdbmacros.dll");
+#elif defined(Q_OS_MAC)
+        QFileInfo fi(directory + "libgdbmacros.dylib");
+#else // generic UNIX
+        QFileInfo fi(directory + "libgdbmacros.so");
+#endif
+        if (fi.exists()) {
+            lastpath = fi.filePath();
+            return lastpath;
+        }
+    }
+    lastpath = QString();
+    return lastpath;
+}
 
 /////
 // CMakeRunner
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
index 2188edb6e99b536de5b429392739c45ca95ef2bc..f8c734c01147ad8c1319366bf8a8d85202341e63 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
@@ -32,6 +32,7 @@
 
 #include <coreplugin/dialogs/ioptionspage.h>
 #include <projectexplorer/iprojectmanager.h>
+#include <projectexplorer/environment.h>
 #include <utils/pathchooser.h>
 #include <QtCore/QFuture>
 #include <QtCore/QStringList>
@@ -60,7 +61,11 @@ public:
 
     QProcess* createXmlFile(const QStringList &arguments, const QString &sourceDirectory, const QDir &buildDirectory);
     static QString findCbpFile(const QDir &);
+
+    static QString findDumperLibrary(const ProjectExplorer::Environment &env);
 private:
+    static QString qtVersionForQMake(const QString &qmakePath);
+    static QString findQtDir(const ProjectExplorer::Environment &env);
     int m_projectContext;
     int m_projectLanguage;
     CMakeSettingsPage *m_settingsPage;
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index 3a888a8c6784faf02cb1776a528e016521214683..6546207ce85c7bee00566320f88c8468042f5139 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -125,7 +125,7 @@ QWidget *CMakeRunConfiguration::configurationWidget()
 
 QString CMakeRunConfiguration::dumperLibrary() const
 {
-    return QString();
+    return CMakeManager::findDumperLibrary(environment());
 }
 
 // Factory
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 890edf9a1f1917baf8b899a6eef222338edcc234..3621c06ac9ece9cd90ff8e4c9a72b1a6b0ec1b2f 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -917,7 +917,6 @@ QString QtVersion::dumperLibrary() const
         QFileInfo fi(directory + "libgdbmacros.dylib");
 #else // generic UNIX
         QFileInfo fi(directory + "libgdbmacros.so");
-        qDebug()<<"Trying"<<(directory + "libgdbmacros.so");
 #endif
         if (fi.exists())
             return fi.filePath();