diff --git a/src/libs/utils/appmainwindow.cpp b/src/libs/utils/appmainwindow.cpp
index 5eb8f4ab194e0be889d880ae9ab2a706ef39c4bf..09bb33362323b4a93de3ffb39cc55b948dab3abb 100644
--- a/src/libs/utils/appmainwindow.cpp
+++ b/src/libs/utils/appmainwindow.cpp
@@ -36,10 +36,13 @@
 #include <windows.h>
 #endif
 
-#include <QtDebug>
 #include <QEvent>
 #include <QCoreApplication>
 
+#ifdef Q_WS_X11
+#include <QX11Info>
+#endif
+
 namespace Utils {
 
 /* The notification signal is delayed by using a custom event
@@ -56,6 +59,18 @@ AppMainWindow::AppMainWindow() :
 {
 }
 
+void AppMainWindow::raiseWindow()
+{
+    setWindowState(windowState() & ~Qt::WindowMinimized);
+
+    raise();
+#ifdef Q_WS_X11
+    // work around QTBUG-24932
+    QX11Info::setAppUserTime(0);
+#endif
+    activateWindow();
+}
+
 #ifdef Q_OS_WIN
 bool AppMainWindow::event(QEvent *event)
 {
diff --git a/src/libs/utils/appmainwindow.h b/src/libs/utils/appmainwindow.h
index 928adb678ddb147d9902e83ce7316fce47eb023c..d773bc8551792d71f76b0eb9660cc480f32d07a5 100644
--- a/src/libs/utils/appmainwindow.h
+++ b/src/libs/utils/appmainwindow.h
@@ -38,17 +38,14 @@
 
 namespace Utils {
 
-/*!
- * This class only exists because we can't include windows.h in mainwindow.cpp
- * because windows defines an IContext...
- */
-
 class QTCREATOR_UTILS_EXPORT AppMainWindow : public QMainWindow
 {
     Q_OBJECT
 public:
     AppMainWindow();
 
+    void raiseWindow();
+
 signals:
     void deviceChange();
 
diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp
index 4718a1cc9fc094e7b96ff05cbe4cde2e5df6f372..98806c9784b86ea6922195e20f61a588baba8c4f 100644
--- a/src/plugins/debugger/commonoptionspage.cpp
+++ b/src/plugins/debugger/commonoptionspage.cpp
@@ -72,6 +72,8 @@ CommonOptionsPageWidget::CommonOptionsPageWidget
         m_ui.checkBoxCloseBuffersOnExit);
     m_group->insert(dc->action(SwitchModeOnExit),
         m_ui.checkBoxSwitchModeOnExit);
+    m_group->insert(dc->action(RaiseOnInterrupt),
+        m_ui.checkBoxBringToForegroundOnInterrrupt);
     m_group->insert(dc->action(FontSizeFollowsEditor),
         m_ui.checkBoxFontSizeFollowsEditor);
     m_group->insert(dc->action(AutoDerefPointers), 0);
@@ -120,6 +122,7 @@ QString CommonOptionsPageWidget::searchKeyWords() const
             << sep << m_ui.checkBoxCloseBuffersOnExit->text()
             << sep << m_ui.checkBoxSwitchModeOnExit->text()
             << sep << m_ui.labelMaximalStackDepth->text()
+            << sep << m_ui.checkBoxBringToForegroundOnInterrrupt->text()
                ;
     rc.remove(QLatin1Char('&'));
     return rc;
diff --git a/src/plugins/debugger/commonoptionspage.ui b/src/plugins/debugger/commonoptionspage.ui
index 8cf9ae4f0e96c17048c41cd6ae3f0def06c2012c..b44f2f36cb421d52ea6265ed5bea438cefea0218 100644
--- a/src/plugins/debugger/commonoptionspage.ui
+++ b/src/plugins/debugger/commonoptionspage.ui
@@ -65,16 +65,6 @@
         </property>
        </widget>
       </item>
-      <item row="3" column="0">
-       <widget class="QCheckBox" name="checkBoxRegisterForPostMortem">
-        <property name="toolTip">
-         <string>Register Qt Creator for debugging crashed applications.</string>
-        </property>
-        <property name="text">
-         <string>Use Qt Creator for post-mortem debugging</string>
-        </property>
-       </widget>
-      </item>
       <item row="4" column="0">
        <layout class="QHBoxLayout" name="horizontalLayout">
         <item>
@@ -130,6 +120,23 @@
         </item>
        </layout>
       </item>
+      <item row="3" column="1">
+       <widget class="QCheckBox" name="checkBoxRegisterForPostMortem">
+        <property name="toolTip">
+         <string>Register Qt Creator for debugging crashed applications.</string>
+        </property>
+        <property name="text">
+         <string>Use Qt Creator for post-mortem debugging</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0">
+       <widget class="QCheckBox" name="checkBoxBringToForegroundOnInterrrupt">
+        <property name="text">
+         <string>Bring Qt Creator to foreground when application interrupts</string>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 0712a37124fa9392bd58cb3c65ea901d707fc6f4..ffb0d1842da55910dd25c1e015df06c3f364c2aa 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -397,6 +397,12 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
     item->setDefaultValue(false);
     insertItem(SwitchModeOnExit, item);
 
+    item = new SavedAction(this);
+    item->setSettingsKey(debugModeGroup, QLatin1String("RaiseOnInterrupt"));
+    item->setCheckable(true);
+    item->setDefaultValue(true);
+    insertItem(RaiseOnInterrupt, item);
+
     item = new SavedAction(this);
     item->setSettingsKey(debugModeGroup, QLatin1String("AutoQuit"));
     item->setText(tr("Automatically Quit Debugger"));
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 1bdc34c496fec4df59cfa622956d50a72a1533fe..9da4ab1b051ae7f8d85ccfadb830f43bddbec2db 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -100,6 +100,7 @@ enum DebuggerActionCode
     OperateByInstruction,
     CloseBuffersOnExit,
     SwitchModeOnExit,
+    RaiseOnInterrupt,
 
     UseDebuggingHelpers,
 
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index f90a91bf85182b7c150b317525e2d0ddd29e3eda..a335902fb0dac026e94207a071e11cd4d31e2c67 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -1038,6 +1038,8 @@ void DebuggerEngine::notifyInferiorSpontaneousStop()
     QTC_ASSERT(state() == InferiorRunOk, qDebug() << this << state());
     showStatusMessage(tr("Stopped."));
     setState(InferiorStopOk);
+    if (debuggerCore()->boolSetting(RaiseOnInterrupt))
+        emit raiseWindow();
 }
 
 void DebuggerEngine::notifyInferiorStopFailed()
diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h
index f2f133dff14437bf9b1814b0118823470237ae60..4151b2dace1a9eb60dda0030525d6f1da95cbb16 100644
--- a/src/plugins/debugger/debuggerengine.h
+++ b/src/plugins/debugger/debuggerengine.h
@@ -302,6 +302,7 @@ signals:
      * a server start script should be used, but none is given.
      */
     void requestRemoteSetup();
+    void raiseWindow();
 
 protected:
     // The base notify*() function implementation should be sufficient
diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp
index d5c1102b9e0496da10f7fb4174e9bf1d2fca296b..1f434e44dceb7cc86171fc6d5897a36e9f665266 100644
--- a/src/plugins/debugger/debuggermainwindow.cpp
+++ b/src/plugins/debugger/debuggermainwindow.cpp
@@ -32,7 +32,9 @@
 
 #include "debuggermainwindow.h"
 #include "debuggercore.h"
+#include "debuggerengine.h"
 
+#include <utils/appmainwindow.h>
 #include <utils/styledbar.h>
 #include <utils/qtcassert.h>
 #include <utils/fancymainwindow.h>
@@ -141,6 +143,8 @@ public:
     Project *m_previousProject;
     Target *m_previousTarget;
     RunConfiguration *m_previousRunConfiguration;
+
+    DebuggerEngine *m_engine;
 };
 
 DebuggerMainWindowPrivate::DebuggerMainWindowPrivate(DebuggerMainWindow *mw)
@@ -157,6 +161,7 @@ DebuggerMainWindowPrivate::DebuggerMainWindowPrivate(DebuggerMainWindow *mw)
     , m_previousProject(0)
     , m_previousTarget(0)
     , m_previousRunConfiguration(0)
+    , m_engine(0)
 {
     createViewsMenuItems();
     addLanguage(CppLanguage, Context(C_CPPDEBUGGER));
@@ -271,6 +276,15 @@ DebuggerMainWindow::~DebuggerMainWindow()
     delete d;
 }
 
+void DebuggerMainWindow::setCurrentEngine(DebuggerEngine *engine)
+{
+    if (d->m_engine)
+        disconnect(d->m_engine, SIGNAL(raiseWindow()), this, SLOT(raiseDebuggerWindow()));
+    d->m_engine = engine;
+    if (d->m_engine)
+        connect(d->m_engine, SIGNAL(raiseWindow()), this, SLOT(raiseDebuggerWindow()));
+}
+
 DebuggerLanguages DebuggerMainWindow::activeDebugLanguages() const
 {
     return d->m_activeDebugLanguages;
@@ -559,6 +573,14 @@ void DebuggerMainWindow::writeSettings() const
     settings->endGroup();
 }
 
+void DebuggerMainWindow::raiseDebuggerWindow()
+{
+    Core::ICore *core = Core::ICore::instance();
+    Utils::AppMainWindow *appMainWindow = qobject_cast<Utils::AppMainWindow*>(core->mainWindow());
+    QTC_ASSERT(appMainWindow, return)
+    appMainWindow->raiseWindow();
+}
+
 void DebuggerMainWindow::readSettings()
 {
     QSettings *settings = ICore::settings();
diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h
index a43ee833c587bd852562ef5e91b14d8acc393485..ed82cbdd7275c4860960e8d04cb52f16f9db4a66 100644
--- a/src/plugins/debugger/debuggermainwindow.h
+++ b/src/plugins/debugger/debuggermainwindow.h
@@ -45,6 +45,8 @@ class IMode;
 
 namespace Debugger {
 
+class DebuggerEngine;
+
 namespace Internal {
 class DebuggerMainWindowPrivate;
 }
@@ -57,6 +59,8 @@ public:
     DebuggerMainWindow();
     ~DebuggerMainWindow();
 
+    void setCurrentEngine(DebuggerEngine *engine);
+
     // Debugger toolbars are registered with this function.
     void setToolBar(DebuggerLanguage language, QWidget *widget);
 
@@ -81,6 +85,9 @@ public:
     void readSettings();
     void writeSettings() const;
 
+private slots:
+    void raiseDebuggerWindow();
+
 signals:
     void activeDebugLanguagesChanged(Debugger::DebuggerLanguages);
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index fcec00c90697f6108113a52c7127fc090b778f52..19aa868c8784bae889fce292fa7e191a10a3b036 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -2100,6 +2100,7 @@ void DebuggerPluginPrivate::connectEngine(DebuggerEngine *engine)
     engine->watchHandler()->rebuildModel();
 
     mainWindow()->setEngineDebugLanguages(engine->languages());
+    mainWindow()->setCurrentEngine(engine);
 }
 
 static void changeFontSize(QWidget *widget, qreal size)