diff --git a/src/plugins/debugger/commonoptionspage.ui b/src/plugins/debugger/commonoptionspage.ui
index 9512db33aaa96cd5be813919a1c31c195d95cc06..249ccaca91796341f56fb1df4784116aeca92e54 100644
--- a/src/plugins/debugger/commonoptionspage.ui
+++ b/src/plugins/debugger/commonoptionspage.ui
@@ -27,6 +27,13 @@
         </property>
        </widget>
       </item>
+      <item>
+       <widget class="QCheckBox" name="checkBoxUseMessageBoxForSignals">
+        <property name="text">
+         <string>Show a message box when receiving a signal</string>
+        </property>
+       </widget>
+      </item>
       <item>
        <widget class="QCheckBox" name="checkBoxUseAlternatingRowColors">
         <property name="text">
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 693dcf4e6617ddf524d1acb4ffea165478b9a89c..0617307ba72a904511fd2600f349c2dccaa849a0 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -122,13 +122,13 @@ DebuggerSettings *DebuggerSettings::instance()
     // View
     //
     item = new SavedAction(instance);
-    instance->insertItem(AdjustColumnWidths, item);
     item->setText(tr("Adjust column widths to contents"));
+    instance->insertItem(AdjustColumnWidths, item);
 
     item = new SavedAction(instance);
-    instance->insertItem(AlwaysAdjustColumnWidths, item);
     item->setText(tr("Always adjust column widths to contents"));
     item->setCheckable(true);
+    instance->insertItem(AlwaysAdjustColumnWidths, item);
 
     item = new SavedAction(instance);
     item->setText(tr("Use alternating row colors"));
@@ -138,8 +138,16 @@ DebuggerSettings *DebuggerSettings::instance()
     instance->insertItem(UseAlternatingRowColors, item);
 
     item = new SavedAction(instance);
-    item->setSettingsKey(debugModeGroup, QLatin1String("LogTimeStamps"));
+    item->setText(tr("Show a message box when receiving a signal"));
+    item->setSettingsKey(debugModeGroup, QLatin1String("UseMessageBoxForSignals"));
+    item->setCheckable(true);
+    item->setDefaultValue(true);
+    item->setValue(true);
+    instance->insertItem(UseMessageBoxForSignals, item);
+
+    item = new SavedAction(instance);
     item->setText(tr("Log time stamps"));
+    item->setSettingsKey(debugModeGroup, QLatin1String("LogTimeStamps"));
     item->setCheckable(true);
     item->setDefaultValue(false);
     instance->insertItem(LogTimeStamps, item);
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index a0ccf46c0058142ebf4287de2b16667222f88e02..fa283bde6ad9f573ef27a6a3d744ddd2b10e87d3 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -77,6 +77,7 @@ enum DebuggerActionCode
     AdjustColumnWidths,
     AlwaysAdjustColumnWidths,
     UseAlternatingRowColors,
+    UseMessageBoxForSignals,
     AutoQuit,
     LockView,
     LogTimeStamps,
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 6b4610e49f8a2e57b02d2bdcacd54e05bff631d6..d96063275832692da39b901fce35ecc7fd0213ac 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -294,6 +294,8 @@ QWidget *CommonOptionsPage::createPage(QWidget *parent)
         m_ui.checkBoxListSourceFiles);
     m_group.insert(theDebuggerAction(UseAlternatingRowColors),
         m_ui.checkBoxUseAlternatingRowColors);
+    m_group.insert(theDebuggerAction(UseMessageBoxForSignals),
+        m_ui.checkBoxUseMessageBoxForSignals);
     m_group.insert(theDebuggerAction(SkipKnownFrames),
         m_ui.checkBoxSkipKnownFrames);
     m_group.insert(theDebuggerAction(UseToolTips),
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index d7ab3f59391067c15fa7cb7029ad42b51239e42e..a327bf9ad5efb4e929ffd6f85cfdac07eae66725 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -790,7 +790,7 @@ void GdbEngine::handleResultRecord(const GdbResultRecord &record)
 
     if (record.token < m_oldestAcceptableToken && (cmd.flags & Discardable)) {
         //qDebug() << "### SKIPPING OLD RESULT" << record.toString();
-        //QMessageBox::information(m_mainWindow, tr("Skipped"), "xxx");
+        //QMessageBox::information(q->mainWindow(), tr("Skipped"), "xxx");
         return;
     }
 
@@ -1186,6 +1186,19 @@ void GdbEngine::handleAsyncOutput(const GdbMi &data)
                 }
             }
 #endif
+            if (reason == "signal-received"
+                && theDebuggerBoolSetting(UseMessageBoxForSignals)) {
+                QByteArray name = data.findChild("signal-name").data();
+                QByteArray meaning = data.findChild("signal-meaning").data();
+                QString msg = tr("<p>The inferior stopped because it received a "
+                    "signal from the Operating System.<p>"
+                    "<table><tr><td>Signal name : </td><td>%1</td></tr>"
+                    "<tr><td>Signal meaning : </td><td>%2</td></tr></table>")
+                    .arg(name.isEmpty() ? tr(" <Unknown> ") : _(name))
+                    .arg(meaning.isEmpty() ? tr(" <Unknown> ") : _(meaning));
+                QMessageBox::information(q->mainWindow(), tr("Signal received"), msg);
+            }
+
             if (reason.isEmpty())
                 q->showStatusMessage(tr("Stopped."));
             else
@@ -1295,11 +1308,11 @@ void GdbEngine::handleShowVersion(const GdbResultRecord &response, const QVarian
                      "Using gdb 6.7 or later is strongly recommended.");
 #if 0
             // ugly, but 'Show again' check box...
-            static QErrorMessage *err = new QErrorMessage(m_mainWindow);
+            static QErrorMessage *err = new QErrorMessage(q->mainWindow());
             err->setMinimumSize(400, 300);
             err->showMessage(msg);
 #else
-            //QMessageBox::information(m_mainWindow, tr("Warning"), msg);
+            //QMessageBox::information(q->mainWindow(), tr("Warning"), msg);
 #endif
         } else {
             m_gdbVersion = 10000 * supported.cap(2).toInt()