diff --git a/share/qtcreator/gdbmacros/gdbmacros.cpp b/share/qtcreator/gdbmacros/gdbmacros.cpp
index 1da444113ea1f44d557d3ede56bffbf4cb2d6d55..ae006133509ba18acab7a459ae1d0ea56d50fa1e 100644
--- a/share/qtcreator/gdbmacros/gdbmacros.cpp
+++ b/share/qtcreator/gdbmacros/gdbmacros.cpp
@@ -68,6 +68,7 @@ int qtGhVersion = QT_VERSION;
 
 #include <ctype.h>
 #include <stdio.h>
+#include <unistd.h>
 
 #ifdef Q_OS_WIN
 #   include <windows.h>
@@ -2484,6 +2485,7 @@ void qDumpObjectData440(
     int extraInt2,
     int extraInt3)
 {
+    //sleep(20);
     if (protocolVersion == 1) {
         QDumper d;
         d.protocolVersion = protocolVersion;
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index c8336c101c36b93f7b34a8fc5c15bbbe173c6836..8a5398f01fe1039f9d2e2fb3d89b4383ff2fd8fa 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -3586,121 +3586,121 @@ void GdbEngine::handleDumpCustomValue2(const GdbResultRecord &record,
 
 void GdbEngine::updateLocals()
 {
-setTokenBarrier();
+    setTokenBarrier();
 
-m_pendingRequests = 0;
-PENDING_DEBUG("\nRESET PENDING");
-m_toolTipCache.clear();
-m_toolTipExpression.clear();
-qq->watchHandler()->reinitializeWatchers();
+    m_pendingRequests = 0;
+    PENDING_DEBUG("\nRESET PENDING");
+    m_toolTipCache.clear();
+    m_toolTipExpression.clear();
+    qq->watchHandler()->reinitializeWatchers();
 
-int level = currentFrame();
-// '2' is 'list with type and value'
-QString cmd = QString("-stack-list-arguments 2 %1 %2").arg(level).arg(level);
-sendSynchronizedCommand(cmd, StackListArguments);                 // stage 1/2
-// '2' is 'list with type and value'
-sendSynchronizedCommand("-stack-list-locals 2", StackListLocals); // stage 2/2
+    int level = currentFrame();
+    // '2' is 'list with type and value'
+    QString cmd = QString("-stack-list-arguments 2 %1 %2").arg(level).arg(level);
+    sendSynchronizedCommand(cmd, StackListArguments);                 // stage 1/2
+    // '2' is 'list with type and value'
+    sendSynchronizedCommand("-stack-list-locals 2", StackListLocals); // stage 2/2
 }
 
 void GdbEngine::handleStackListArguments(const GdbResultRecord &record)
 {
-// stage 1/2
-
-// Linux:
-// 12^done,stack-args=
-//   [frame={level="0",args=[
-//     {name="argc",type="int",value="1"},
-//     {name="argv",type="char **",value="(char **) 0x7..."}]}]
-// Mac:
-// 78^done,stack-args=
-//    {frame={level="0",args={
-//      varobj=
-//        {exp="this",value="0x38a2fab0",name="var21",numchild="3",
-//             type="CurrentDocumentFind *  const",typecode="PTR",
-//             dynamic_type="",in_scope="true",block_start_addr="0x3938e946",
-//             block_end_addr="0x3938eb2d"},
-//      varobj=
-//         {exp="before",value="@0xbfffb9f8: {d = 0x3a7f2a70}",
-//              name="var22",numchild="1",type="const QString  ...} }}}
-//
-// In both cases, iterating over the children of stack-args/frame/args
-// is ok.
-m_currentFunctionArgs.clear();
-if (record.resultClass == GdbResultDone) {
-    const GdbMi list = record.data.findChild("stack-args");
-    const GdbMi frame = list.findChild("frame");
-    const GdbMi args = frame.findChild("args");
-    m_currentFunctionArgs = args.children();
-} else if (record.resultClass == GdbResultError) {
-    qDebug() << "FIXME: GdbEngine::handleStackListArguments: should not happen";
-}
+    // stage 1/2
+
+    // Linux:
+    // 12^done,stack-args=
+    //   [frame={level="0",args=[
+    //     {name="argc",type="int",value="1"},
+    //     {name="argv",type="char **",value="(char **) 0x7..."}]}]
+    // Mac:
+    // 78^done,stack-args=
+    //    {frame={level="0",args={
+    //      varobj=
+    //        {exp="this",value="0x38a2fab0",name="var21",numchild="3",
+    //             type="CurrentDocumentFind *  const",typecode="PTR",
+    //             dynamic_type="",in_scope="true",block_start_addr="0x3938e946",
+    //             block_end_addr="0x3938eb2d"},
+    //      varobj=
+    //         {exp="before",value="@0xbfffb9f8: {d = 0x3a7f2a70}",
+    //              name="var22",numchild="1",type="const QString  ...} }}}
+    //
+    // In both cases, iterating over the children of stack-args/frame/args
+    // is ok.
+    m_currentFunctionArgs.clear();
+    if (record.resultClass == GdbResultDone) {
+        const GdbMi list = record.data.findChild("stack-args");
+        const GdbMi frame = list.findChild("frame");
+        const GdbMi args = frame.findChild("args");
+        m_currentFunctionArgs = args.children();
+    } else if (record.resultClass == GdbResultError) {
+        qDebug() << "FIXME: GdbEngine::handleStackListArguments: should not happen";
+    }
 }
 
 void GdbEngine::handleStackListLocals(const GdbResultRecord &record)
 {
-// stage 2/2
+    // stage 2/2
 
-// There could be shadowed variables
-QList<GdbMi> locals = record.data.findChild("locals").children();
-locals += m_currentFunctionArgs;
+    // There could be shadowed variables
+    QList<GdbMi> locals = record.data.findChild("locals").children();
+    locals += m_currentFunctionArgs;
 
-setLocals(locals);
+    setLocals(locals);
 }
 
 void GdbEngine::setLocals(const QList<GdbMi> &locals) 
 { 
-//qDebug() << m_varToType;
-QHash<QString, int> seen;
-
-foreach (const GdbMi &item, locals) {
-    // Local variables of inlined code are reported as 
-    // 26^done,locals={varobj={exp="this",value="",name="var4",exp="this",
-    // numchild="1",type="const QtSharedPointer::Basic<CPlusPlus::..."
-    // We do not want these at all. Current hypotheses is that those
-    // "spurious" locals have _two_ "exp" field. Try to filter them:
-    #ifdef Q_OS_MAC
-    int numExps = 0;
-    foreach (const GdbMi &child, item.children())
-        numExps += int(child.name() == "exp");
-    if (numExps > 1)
-        continue;
-    QString name = item.findChild("exp").data();
-    #else
-    QString name = item.findChild("name").data();
-    #endif
-    int n = seen.value(name);
-    if (n) {
-        seen[name] = n + 1;
-        WatchData data;
-        data.iname = "local." + name + QString::number(n + 1);
-        data.name = name + QString(" <shadowed %1>").arg(n);
-        //data.setValue("<shadowed>");
-        setWatchDataValue(data, item.findChild("value"));
-        data.setType("<shadowed>");
-        data.setChildCount(0);
-        insertData(data);
-    } else {
-        seen[name] = 1;
-        WatchData data;
-        data.iname = "local." + name;
-        data.name = name;
-        data.exp = name;
-        data.framekey = m_currentFrame + data.name;
-        setWatchDataType(data, item.findChild("type"));
-        // set value only directly if it is simple enough, otherwise
-        // pass through the insertData() machinery
-        if (isIntOrFloatType(data.type) || isPointerType(data.type))
+    //qDebug() << m_varToType;
+    QHash<QString, int> seen;
+
+    foreach (const GdbMi &item, locals) {
+        // Local variables of inlined code are reported as 
+        // 26^done,locals={varobj={exp="this",value="",name="var4",exp="this",
+        // numchild="1",type="const QtSharedPointer::Basic<CPlusPlus::..."
+        // We do not want these at all. Current hypotheses is that those
+        // "spurious" locals have _two_ "exp" field. Try to filter them:
+        #ifdef Q_OS_MAC
+        int numExps = 0;
+        foreach (const GdbMi &child, item.children())
+            numExps += int(child.name() == "exp");
+        if (numExps > 1)
+            continue;
+        QString name = item.findChild("exp").data();
+        #else
+        QString name = item.findChild("name").data();
+        #endif
+        int n = seen.value(name);
+        if (n) {
+            seen[name] = n + 1;
+            WatchData data;
+            data.iname = "local." + name + QString::number(n + 1);
+            data.name = name + QString(" <shadowed %1>").arg(n);
+            //data.setValue("<shadowed>");
             setWatchDataValue(data, item.findChild("value"));
-        if (!qq->watchHandler()->isExpandedIName(data.iname))
-            data.setChildrenUnneeded();
-        if (isPointerType(data.type) || data.name == "this")
-            data.setChildCount(1);
-        if (0 && m_varToType.contains(data.framekey)) {
-            qDebug() << "RE-USING " << m_varToType.value(data.framekey);
-            data.setType(m_varToType.value(data.framekey));
+            data.setType("<shadowed>");
+            data.setChildCount(0);
+            insertData(data);
+        } else {
+            seen[name] = 1;
+            WatchData data;
+            data.iname = "local." + name;
+            data.name = name;
+            data.exp = name;
+            data.framekey = m_currentFrame + data.name;
+            setWatchDataType(data, item.findChild("type"));
+            // set value only directly if it is simple enough, otherwise
+            // pass through the insertData() machinery
+            if (isIntOrFloatType(data.type) || isPointerType(data.type))
+                setWatchDataValue(data, item.findChild("value"));
+            if (!qq->watchHandler()->isExpandedIName(data.iname))
+                data.setChildrenUnneeded();
+            if (isPointerType(data.type) || data.name == "this")
+                data.setChildCount(1);
+            if (0 && m_varToType.contains(data.framekey)) {
+                qDebug() << "RE-USING " << m_varToType.value(data.framekey);
+                data.setType(m_varToType.value(data.framekey));
+            }
+            insertData(data);
         }
-        insertData(data);
-    }
     }
 }
 
diff --git a/src/plugins/debugger/procinterrupt.cpp b/src/plugins/debugger/procinterrupt.cpp
index 1817047d3e3bcc5adee73ab99ea743a0052d3ee7..47a309deac8af5fb7bb1e2978969f698dc5e0e62 100644
--- a/src/plugins/debugger/procinterrupt.cpp
+++ b/src/plugins/debugger/procinterrupt.cpp
@@ -177,8 +177,7 @@ bool Debugger::Internal::interruptProcess(int pID)
 {
     int procId = pID;
     if (procId != -1) {
-        // used SIGINT previously
-        if (kill(procId, SIGTRAP) == 0)
+        if (kill(procId, SIGINT) == 0)
             return true;
     }
     return false;