diff --git a/src/plugins/debugger/debuggeragents.h b/src/plugins/debugger/debuggeragents.h
index febee6c9db1b3b337594934bfc83be358172f391..664d7a26776097e237f0b037d8d79bfd0028acee 100644
--- a/src/plugins/debugger/debuggeragents.h
+++ b/src/plugins/debugger/debuggeragents.h
@@ -68,8 +68,7 @@ private:
     QPointer<DebuggerEngine> m_engine;
 };
 
-
-class DisassemblerViewAgentPrivate;
+struct DisassemblerViewAgentPrivate;
 
 class DisassemblerViewAgent : public QObject
 {
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index 06671e27d8511cc1ca36c0a3fcba9bfd87387371..cf27d8291e2aa2c99679015e6c91a84afa285383 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -122,18 +122,15 @@ public:
     virtual ~DebuggerEngine();
 
     virtual void shutdown() {}
-    virtual void setToolTipExpression(const QPoint &mousePos,
-            TextEditor::ITextEditor *editor, int cursorPos)
-        { Q_UNUSED(mousePos); Q_UNUSED(editor); Q_UNUSED(cursorPos); }
+    virtual void setToolTipExpression(const QPoint & /* mousePos */,
+            TextEditor::ITextEditor * /* editor */, int /* cursorPos */) { }
     void initializeFromTemplate(DebuggerEngine *other);
     void startDebugger(DebuggerRunControl *runControl);
     virtual void startDebugger() {}
     virtual void exitDebugger() {}
     virtual void abortDebugger() { exitDebugger(); }
     virtual void detachDebugger() {}
-    virtual void updateWatchData(const WatchData &data)
-        { Q_UNUSED(data); }
-
+    virtual void updateWatchData(const WatchData & /* data */) { }
     virtual void executeStep() {}
     virtual void executeStepOut()  {}
     virtual void executeNext() {}
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 185192fbf14b0bfb4bcbd318f2ed089f06c978d2..97d882016cf9d20c8ee18127df270638e1a2f99a 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -829,8 +829,8 @@ public slots:
     ProjectExplorer::RunControl *createDebugger(const DebuggerStartParameters &sp);
     void startDebugger(ProjectExplorer::RunControl *runControl);
 
-    void setToolTipExpression(const QPoint &mousePos,
-        TextEditor::ITextEditor *editor, int cursorPos)
+    void setToolTipExpression(const QPoint & /* mousePos */,
+        TextEditor::ITextEditor * /* editor */, int /* cursorPos */)
     {
         // FIXME
     }
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index cd891a1f2d80e52b74bee952b49e9f91832b0466..129b5d0e6657b1c1b429de3dd18fc982508addc3 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -35,6 +35,10 @@
 #include "debuggerplugin.h"
 #include "debuggerstringutils.h"
 
+#ifdef Q_OS_WIN
+#  include "peutils.h"
+#endif
+
 #include <projectexplorer/debugginghelper.h>
 #include <projectexplorer/environment.h>
 #include <projectexplorer/project.h>
@@ -50,6 +54,7 @@
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
 #include <QtCore/QTimer>
+#include <QtCore/QStringList>
 
 #include <QtGui/QAbstractItemView>
 #include <QtGui/QTextDocument>
@@ -257,21 +262,21 @@ DebuggerEngineType DebuggerRunControl::engineForExecutable(const QString &execut
 #ifdef Q_OS_WIN
     // A remote executable?
     if (!executable.endsWith(_(".exe")))
-        return GdbEngineType
+        return GdbEngineType;
 
     // If a file has PDB files, it has been compiled by VS.
     QStringList pdbFiles;
-    if (!getPDBFiles(executable, &pdbFiles, errorMessage)) {
+    if (!getPDBFiles(executable, &pdbFiles, &m_errorMessage)) {
         qWarning("Cannot determine type of executable %s: %s",
                  qPrintable(executable), qPrintable(m_errorMessage));
-        return 0;
+        return NoEngineType;
     }
     if (pdbFiles.empty())
         return GdbEngineType;
 
     // We need the CDB debugger in order to be able to debug VS
     // executables
-    if (checkDebugConfiguration(ToolChain::MSVC, errorMessage, 0, &m_settingsIdHint))
+    if (checkDebugConfiguration(ToolChain::MSVC, &m_errorMessage, 0, &m_settingsIdHint))
         return CdbEngineType;
 #else
     if (m_enabledEngines & GdbEngineType)
@@ -290,10 +295,9 @@ DebuggerEngineType DebuggerRunControl::engineForMode(DebuggerStartMode startMode
 
 #ifdef Q_OS_WIN
     // Preferably Windows debugger for attaching locally.
-    if (startMode != AttachToRemote && cdbEngine)
+    if (startMode != AttachToRemote)
         return CdbEngineType;
-    if (gdbEngine)
-        return GdbEngineType;
+    return GdbEngineType;
     m_errorMessage = msgEngineNotAvailable("Gdb Engine");
     return NoEngineType;
 #else
@@ -333,7 +337,7 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &sp)
     if (!engineType)
         engineType = engineForMode(sp.startMode);
 
-    //qDebug() << "USING ENGINE : " << engineType;
+    // qDebug() << "USING ENGINE : " << engineType;
 
     switch (engineType) {
         case GdbEngineType:
@@ -513,6 +517,12 @@ bool DebuggerRunControl::isRunning() const
     return m_running;
 }
 
+DebuggerState DebuggerRunControl::state() const
+{
+    QTC_ASSERT(m_engine, return DebuggerNotReady);
+    return m_engine->state();
+}
+
 Internal::DebuggerEngine *DebuggerRunControl::engine()
 {
     QTC_ASSERT(m_engine, /**/);
diff --git a/src/plugins/debugger/debuggerrunner.h b/src/plugins/debugger/debuggerrunner.h
index 432765423cfdf0491759a133e322571f2cf7ab19..5f1fcdc637e52352d4cf966a4043ae820d2271f6 100644
--- a/src/plugins/debugger/debuggerrunner.h
+++ b/src/plugins/debugger/debuggerrunner.h
@@ -101,6 +101,7 @@ public:
     void startSuccessful();
     void debuggingFinished();
 
+    DebuggerState state() const;
     Internal::DebuggerEngine *engine();
 
     void showMessage(const QString &msg, int channel);
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
index 6ea396003d8723c0023c101b06d3d14965e6270d..e3b9a005b70133e7c25148ab01afccb6904f971f 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemoruncontrol.cpp
@@ -477,7 +477,7 @@ void MaemoDebugRunControl::stopInternal()
 bool MaemoDebugRunControl::isRunning() const
 {
     return AbstractMaemoRunControl::isRunning()
-        || m_debuggerRunControl->engine()->state() != Debugger::DebuggerNotReady;
+        || m_debuggerRunControl->state() != Debugger::DebuggerNotReady;
 }
 
 void MaemoDebugRunControl::debuggingFinished()