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