diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 08b44160088967dce136347403f7f5ae0841afa6..4bd8673961923d7e3643a2768b4f8b7ee12dbd91 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -1410,6 +1410,7 @@ void GdbEngine::handleStop1(const GdbMi &data)
         const QByteArray threadId = data.findChild("thread-id").data();
         const BreakpointId id = breakHandler()->findBreakpointByNumber(bpNumber);
         showStatusMessage(msgBreakpointTriggered(id, bpNumber, _(threadId)));
+        m_currentThread = threadId;
     } else {
         QString reasontr = msgStopped(_(reason));
         if (reason == "signal-received"
@@ -2984,8 +2985,12 @@ void GdbEngine::activateFrame(int frameIndex)
     // Otherwise the lines below would need to get triggered
     // after a response to this -stack-select-frame here.
     handler->setCurrentIndex(frameIndex);
-    postCommand("-stack-select-frame " + QByteArray::number(frameIndex),
-        Discardable, CB(handleStackSelectFrame));
+    QByteArray cmd = "-stack-select-frame";
+    //if (!m_currentThread.isEmpty())
+    //    cmd += " --thread " + m_currentThread;
+    cmd += ' ';
+    cmd += QByteArray::number(frameIndex);
+    postCommand(cmd, Discardable, CB(handleStackSelectFrame));
     gotoLocation(stackHandler()->currentFrame());
     updateLocals();
     reloadRegisters();
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index 070a19a474dd3b6217d960f0e1281c6f60b377ba..df3268ec8871b0384f0505ef50867c0ada5c174f 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -548,6 +548,7 @@ private: ////////// View & Data Stuff //////////
 
     // HACK:
     StackFrame m_targetFrame;
+    QByteArray m_currentThread;
 };
 
 } // namespace Internal