diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index a4ff424c1a268792f0c4a9f7e6bb98050f121630..bd76dd128cbd54093952de03db987dc7ef20f32b 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -35,7 +35,6 @@
 #include "debuggerplugin.h"
 #include "debuggerstringutils.h"
 #include "debuggertooltip.h"
-#include "logwindow.h"
 
 #include "breakhandler.h"
 #include "moduleshandler.h"
@@ -45,8 +44,6 @@
 #include "stackhandler.h"
 #include "threadshandler.h"
 #include "watchhandler.h"
-#include "watchutils.h"
-#include "breakwindow.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/ifile.h>
@@ -55,8 +52,6 @@
 
 #include <projectexplorer/toolchaintype.h>
 
-#include <qt4projectmanager/qt4projectmanagerconstants.h>
-
 #include <texteditor/itexteditor.h>
 
 #include <utils/environment.h>
@@ -67,17 +62,9 @@
 #include <QtCore/QTimer>
 #include <QtCore/QFutureInterface>
 
-#include <QtGui/QAbstractItemView>
 #include <QtGui/QStandardItemModel>
 #include <QtGui/QAction>
-#include <QtGui/QMenu>
-#include <QtGui/QMessageBox>
-#include <QtGui/QPlainTextEdit>
-#include <QtGui/QPushButton>
-#include <QtGui/QTextBlock>
-#include <QtGui/QTextCursor>
 #include <QtGui/QTreeWidget>
-#include <QtGui/QMainWindow>
 
 using namespace Core;
 using namespace Debugger;
@@ -550,57 +537,6 @@ void DebuggerEngine::gotoLocation(const StackFrame &frame, bool setMarker)
     }
 }
 
-
-void DebuggerEngine::executeRunToLine()
-{
-    QString fileName;
-    int lineNumber;
-    if (currentTextEditorPosition(&fileName, &lineNumber)) {
-        resetLocation();
-        executeRunToLine(fileName, lineNumber);
-    }
-}
-
-void DebuggerEngine::executeRunToFunction()
-{
-    ITextEditor *textEditor = currentTextEditor();
-    QTC_ASSERT(textEditor, return);
-    QPlainTextEdit *ed = qobject_cast<QPlainTextEdit*>(textEditor->widget());
-    if (!ed)
-        return;
-    QTextCursor cursor = ed->textCursor();
-    QString functionName = cursor.selectedText();
-    if (functionName.isEmpty()) {
-        const QTextBlock block = cursor.block();
-        const QString line = block.text();
-        foreach (const QString &str, line.trimmed().split('(')) {
-            QString a;
-            for (int i = str.size(); --i >= 0; ) {
-                if (!str.at(i).isLetterOrNumber())
-                    break;
-                a = str.at(i) + a;
-            }
-            if (!a.isEmpty()) {
-                functionName = a;
-                break;
-            }
-        }
-    }
-
-    if (functionName.isEmpty())
-        return;
-    resetLocation();
-    executeRunToFunction(functionName);
-}
-
-void DebuggerEngine::executeJumpToLine()
-{
-    QString fileName;
-    int lineNumber;
-    if (currentTextEditorPosition(&fileName, &lineNumber))
-        executeJumpToLine(fileName, lineNumber);
-}
-
 // Called from RunControl.
 void DebuggerEngine::handleStartFailed()
 {
@@ -663,33 +599,7 @@ QStringList DebuggerEngine::qtDumperLibraryLocations() const
 
 void DebuggerEngine::showQtDumperLibraryWarning(const QString &details)
 {
-    QMessageBox dialog(plugin()->mainWindow());
-    QPushButton *qtPref = dialog.addButton(tr("Open Qt4 Options"),
-        QMessageBox::ActionRole);
-    QPushButton *helperOff = dialog.addButton(tr("Turn off Helper Usage"),
-        QMessageBox::ActionRole);
-    QPushButton *justContinue = dialog.addButton(tr("Continue Anyway"),
-        QMessageBox::AcceptRole);
-    dialog.setDefaultButton(justContinue);
-    dialog.setWindowTitle(tr("Debugging Helper Missing"));
-    dialog.setText(tr("The debugger could not load the debugging helper library."));
-    dialog.setInformativeText(tr(
-        "The debugging helper is used to nicely format the values of some Qt "
-        "and Standard Library data types. "
-        "It must be compiled for each used Qt version separately. "
-        "On the Qt4 options page, select a Qt installation "
-        "and click Rebuild."));
-    if (!details.isEmpty())
-        dialog.setDetailedText(details);
-    dialog.exec();
-    if (dialog.clickedButton() == qtPref) {
-        Core::ICore::instance()->showOptionsDialog(
-            _(Qt4ProjectManager::Constants::QT_SETTINGS_CATEGORY),
-            _(Qt4ProjectManager::Constants::QTVERSION_SETTINGS_PAGE_ID));
-    } else if (dialog.clickedButton() == helperOff) {
-        theDebuggerAction(UseDebuggingHelpers)
-            ->setValue(qVariantFromValue(false), false);
-    }
+    plugin()->showQtDumperLibraryWarning(details);
 }
 
 QString DebuggerEngine::qtDumperLibraryName() const
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index badb9fea313d4b736faadf76b637e9d80c3045ab..c5d2fcbab533a987b8f9cf16352a7d97a491f9f3 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -339,11 +339,6 @@ protected:
     DebuggerRunControl *runControl() const;
 
 private:
-    void executeRunToLine();
-    void executeRunToFunction();
-    void executeJumpToLine();
-    void addToWatchWindow();
-
     // wrapper engine needs access to state of its subengines
     friend class QmlCppEngine;
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 618b00654def77f87038c26785e2b88b6b77ab30..024a07eedbfd1f7fbffc7603e668c44030bfea0a 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -91,6 +91,8 @@
 #include <projectexplorer/target.h>
 #include <projectexplorer/toolchaintype.h>
 
+#include <qt4projectmanager/qt4projectmanagerconstants.h>
+
 #include <texteditor/basetexteditor.h>
 #include <texteditor/basetextmark.h>
 #include <texteditor/fontsettings.h>
@@ -109,6 +111,9 @@
 #include <QtGui/QFileDialog>
 #include <QtGui/QMenu>
 #include <QtGui/QMessageBox>
+#include <QtGui/QPushButton>
+#include <QtGui/QTextBlock>
+#include <QtGui/QTextCursor>
 #include <QtGui/QToolButton>
 
 #include <climits>
@@ -1044,20 +1049,51 @@ public slots:
     {
         //removeTooltip();
         resetLocation();
-        currentEngine()->executeJumpToLine(); // FIXME: move code from engine here.
+        QString fileName;
+        int lineNumber;
+        if (currentTextEditorPosition(&fileName, &lineNumber))
+            currentEngine()->executeJumpToLine(fileName, lineNumber);
     }
 
     void handleExecRunToLine()
     {
         //removeTooltip();
         resetLocation();
-        currentEngine()->executeRunToLine(); // FIXME: move code from engine here.
+        QString fileName;
+        int lineNumber;
+        if (currentTextEditorPosition(&fileName, &lineNumber))
+            currentEngine()->executeRunToLine(fileName, lineNumber);
     }
 
     void handleExecRunToFunction()
     {
         resetLocation();
-        currentEngine()->executeRunToFunction(); // FIXME: move code from engine here.
+        ITextEditor *textEditor = currentTextEditor();
+        QTC_ASSERT(textEditor, return);
+        QPlainTextEdit *ed = qobject_cast<QPlainTextEdit*>(textEditor->widget());
+        if (!ed)
+            return;
+        QTextCursor cursor = ed->textCursor();
+        QString functionName = cursor.selectedText();
+        if (functionName.isEmpty()) {
+            const QTextBlock block = cursor.block();
+            const QString line = block.text();
+            foreach (const QString &str, line.trimmed().split('(')) {
+                QString a;
+                for (int i = str.size(); --i >= 0; ) {
+                    if (!str.at(i).isLetterOrNumber())
+                        break;
+                    a = str.at(i) + a;
+                }
+                if (!a.isEmpty()) {
+                    functionName = a;
+                    break;
+                }
+            }
+        }
+
+        if (!functionName.isEmpty())
+            currentEngine()->executeRunToFunction(functionName);
     }
 
     void slotEditBreakpoint()
@@ -3129,6 +3165,37 @@ void DebuggerPlugin::remoteCommand(const QStringList &options, const QStringList
         qWarning("%s", qPrintable(errorMessage));
 }
 
+void DebuggerPlugin::showQtDumperLibraryWarning(const QString &details)
+{
+    QMessageBox dialog(mainWindow());
+    QPushButton *qtPref = dialog.addButton(tr("Open Qt4 Options"),
+        QMessageBox::ActionRole);
+    QPushButton *helperOff = dialog.addButton(tr("Turn off Helper Usage"),
+        QMessageBox::ActionRole);
+    QPushButton *justContinue = dialog.addButton(tr("Continue Anyway"),
+        QMessageBox::AcceptRole);
+    dialog.setDefaultButton(justContinue);
+    dialog.setWindowTitle(tr("Debugging Helper Missing"));
+    dialog.setText(tr("The debugger could not load the debugging helper library."));
+    dialog.setInformativeText(tr(
+        "The debugging helper is used to nicely format the values of some Qt "
+        "and Standard Library data types. "
+        "It must be compiled for each used Qt version separately. "
+        "On the Qt4 options page, select a Qt installation "
+        "and click Rebuild."));
+    if (!details.isEmpty())
+        dialog.setDetailedText(details);
+    dialog.exec();
+    if (dialog.clickedButton() == qtPref) {
+        Core::ICore::instance()->showOptionsDialog(
+            _(Qt4ProjectManager::Constants::QT_SETTINGS_CATEGORY),
+            _(Qt4ProjectManager::Constants::QTVERSION_SETTINGS_PAGE_ID));
+    } else if (dialog.clickedButton() == helperOff) {
+        theDebuggerAction(UseDebuggingHelpers)
+            ->setValue(qVariantFromValue(false), false);
+    }
+}
+
 //////////////////////////////////////////////////////////////////////
 //
 // Testing
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index d4ef3878150f021f27566d65e3847bc64e56812b..200259bbf376c570e39381e7f00c5c56ce5a045d 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -82,6 +82,7 @@ public:
     void setConfigValue(const QString &name, const QVariant &value);
     void updateState(DebuggerEngine *engine);
     virtual void remoteCommand(const QStringList &options, const QStringList &arguments);
+    void showQtDumperLibraryWarning(const QString &details);
 
     QIcon locationMarkIcon() const;
     void activateDebugMode();