diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 8e0c4367fe5..0ad3ce43aba 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -254,7 +254,6 @@ class Dumper(DumperBase): self.breakpointsToCheck = set([]) self.qmlBreakpointResolvers = {} self.qmlTriggeredBreakpoint = None - self.nativeMixed = False def enterSubItem(self, item): if isinstance(item.name, lldb.SBValue): @@ -834,18 +833,19 @@ class Dumper(DumperBase): return i return None - def reportStack(self, args = {}): + def reportStack(self, args): if not self.process: self.report('msg="No process"') return thread = self.currentThread() - limit = args.get('stacklimit', -1) if not thread: self.report('msg="No thread"') return - (n, isLimited) = (limit, True) if limit > 0 else (thread.GetNumFrames(), False) + isNativeMixed = int(args.get('nativeMixed', 0)) + limit = args.get('stacklimit', -1) + (n, isLimited) = (limit, True) if limit > 0 else (thread.GetNumFrames(), False) self.currentCallContext = None result = 'stack={current-thread="%s"' % thread.GetThreadID() result += ',frames=[' @@ -866,7 +866,7 @@ class Dumper(DumperBase): usable = None language = None - if self.nativeMixed: + if isNativeMixed: if self.isReportableQmlFrame(functionName): engine = frame.FindVariable("engine") self.context = engine @@ -1727,7 +1727,6 @@ class Dumper(DumperBase): self.reportVariables() def createResolvePendingBreakpointsHookBreakpoint(self, args): - self.nativeMixed = True if self.qmlTriggeredBreakpoint is None: self.qmlTriggeredBreakpoint = \ self.target.BreakpointCreateByName("qt_v4TriggeredBreakpointHook") diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index e02bfec3388..2cfc00face6 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -181,6 +181,9 @@ public: connect(action(IntelFlavor), SIGNAL(valueChanged(QVariant)), SLOT(reloadDisassembly())); + connect(action(OperateNativeMixed), &QAction::triggered, + engine, &DebuggerEngine::reloadFullStack); + Utils::globalMacroExpander()->registerFileVariables(PrefixDebugExecutable, tr("Debugged executable"), [this]() { return m_startParameters.executable; }); diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index e4b1c9e4510..1d49579dd8a 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -515,6 +515,7 @@ void LldbEngine::activateFrame(int frameIndex) const int n = stackHandler()->stackSize(); if (frameIndex == n) { DebuggerCommand cmd("reportStack"); + cmd.arg("nativeMixed", isNativeMixedActive()); cmd.arg("stacklimit", n * 10 + 3); runCommand(cmd); return; @@ -797,6 +798,7 @@ void LldbEngine::updateAll() void LldbEngine::reloadFullStack() { DebuggerCommand cmd("reportStack"); + cmd.arg("nativeMixed", isNativeMixedActive()); cmd.arg("stacklimit", -1); runCommand(cmd); } @@ -804,6 +806,7 @@ void LldbEngine::reloadFullStack() void LldbEngine::updateStack() { DebuggerCommand cmd("reportStack"); + cmd.arg("nativeMixed", isNativeMixedActive()); cmd.arg("stacklimit", action(MaximalStackDepth)->value().toInt()); runCommand(cmd); } @@ -842,6 +845,7 @@ void LldbEngine::doUpdateLocals(UpdateParameters params) WatchHandler *handler = watchHandler(); DebuggerCommand cmd("updateData"); + cmd.arg("nativeMixed", isNativeMixedActive()); cmd.arg("expanded", handler->expansionRequests()); cmd.arg("typeformats", handler->typeFormatRequests()); cmd.arg("formats", handler->individualFormatRequests()); diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp index b408496b5f8..36ebbf7179c 100644 --- a/src/plugins/debugger/stackhandler.cpp +++ b/src/plugins/debugger/stackhandler.cpp @@ -66,10 +66,6 @@ StackHandler::StackHandler() m_canExpand = false; connect(action(OperateByInstruction), &QAction::triggered, this, &StackHandler::resetModel); - - if (isNativeMixedEnabled()) - connect(action(OperateNativeMixed), &QAction::triggered, - this, &StackHandler::resetModel); } StackHandler::~StackHandler()