Debugger: Enable 'native mixed' toogling also for LLDB

Change-Id: I50a026d6af2874aa78db98b0df1fcbe233c88b1b
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
hjk
2015-02-05 14:19:32 +01:00
parent 61388613fa
commit e4de40127f
4 changed files with 12 additions and 10 deletions

View File

@@ -254,7 +254,6 @@ class Dumper(DumperBase):
self.breakpointsToCheck = set([]) self.breakpointsToCheck = set([])
self.qmlBreakpointResolvers = {} self.qmlBreakpointResolvers = {}
self.qmlTriggeredBreakpoint = None self.qmlTriggeredBreakpoint = None
self.nativeMixed = False
def enterSubItem(self, item): def enterSubItem(self, item):
if isinstance(item.name, lldb.SBValue): if isinstance(item.name, lldb.SBValue):
@@ -834,18 +833,19 @@ class Dumper(DumperBase):
return i return i
return None return None
def reportStack(self, args = {}): def reportStack(self, args):
if not self.process: if not self.process:
self.report('msg="No process"') self.report('msg="No process"')
return return
thread = self.currentThread() thread = self.currentThread()
limit = args.get('stacklimit', -1)
if not thread: if not thread:
self.report('msg="No thread"') self.report('msg="No thread"')
return 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 self.currentCallContext = None
result = 'stack={current-thread="%s"' % thread.GetThreadID() result = 'stack={current-thread="%s"' % thread.GetThreadID()
result += ',frames=[' result += ',frames=['
@@ -866,7 +866,7 @@ class Dumper(DumperBase):
usable = None usable = None
language = None language = None
if self.nativeMixed: if isNativeMixed:
if self.isReportableQmlFrame(functionName): if self.isReportableQmlFrame(functionName):
engine = frame.FindVariable("engine") engine = frame.FindVariable("engine")
self.context = engine self.context = engine
@@ -1727,7 +1727,6 @@ class Dumper(DumperBase):
self.reportVariables() self.reportVariables()
def createResolvePendingBreakpointsHookBreakpoint(self, args): def createResolvePendingBreakpointsHookBreakpoint(self, args):
self.nativeMixed = True
if self.qmlTriggeredBreakpoint is None: if self.qmlTriggeredBreakpoint is None:
self.qmlTriggeredBreakpoint = \ self.qmlTriggeredBreakpoint = \
self.target.BreakpointCreateByName("qt_v4TriggeredBreakpointHook") self.target.BreakpointCreateByName("qt_v4TriggeredBreakpointHook")

View File

@@ -181,6 +181,9 @@ public:
connect(action(IntelFlavor), SIGNAL(valueChanged(QVariant)), connect(action(IntelFlavor), SIGNAL(valueChanged(QVariant)),
SLOT(reloadDisassembly())); SLOT(reloadDisassembly()));
connect(action(OperateNativeMixed), &QAction::triggered,
engine, &DebuggerEngine::reloadFullStack);
Utils::globalMacroExpander()->registerFileVariables(PrefixDebugExecutable, Utils::globalMacroExpander()->registerFileVariables(PrefixDebugExecutable,
tr("Debugged executable"), tr("Debugged executable"),
[this]() { return m_startParameters.executable; }); [this]() { return m_startParameters.executable; });

View File

@@ -515,6 +515,7 @@ void LldbEngine::activateFrame(int frameIndex)
const int n = stackHandler()->stackSize(); const int n = stackHandler()->stackSize();
if (frameIndex == n) { if (frameIndex == n) {
DebuggerCommand cmd("reportStack"); DebuggerCommand cmd("reportStack");
cmd.arg("nativeMixed", isNativeMixedActive());
cmd.arg("stacklimit", n * 10 + 3); cmd.arg("stacklimit", n * 10 + 3);
runCommand(cmd); runCommand(cmd);
return; return;
@@ -797,6 +798,7 @@ void LldbEngine::updateAll()
void LldbEngine::reloadFullStack() void LldbEngine::reloadFullStack()
{ {
DebuggerCommand cmd("reportStack"); DebuggerCommand cmd("reportStack");
cmd.arg("nativeMixed", isNativeMixedActive());
cmd.arg("stacklimit", -1); cmd.arg("stacklimit", -1);
runCommand(cmd); runCommand(cmd);
} }
@@ -804,6 +806,7 @@ void LldbEngine::reloadFullStack()
void LldbEngine::updateStack() void LldbEngine::updateStack()
{ {
DebuggerCommand cmd("reportStack"); DebuggerCommand cmd("reportStack");
cmd.arg("nativeMixed", isNativeMixedActive());
cmd.arg("stacklimit", action(MaximalStackDepth)->value().toInt()); cmd.arg("stacklimit", action(MaximalStackDepth)->value().toInt());
runCommand(cmd); runCommand(cmd);
} }
@@ -842,6 +845,7 @@ void LldbEngine::doUpdateLocals(UpdateParameters params)
WatchHandler *handler = watchHandler(); WatchHandler *handler = watchHandler();
DebuggerCommand cmd("updateData"); DebuggerCommand cmd("updateData");
cmd.arg("nativeMixed", isNativeMixedActive());
cmd.arg("expanded", handler->expansionRequests()); cmd.arg("expanded", handler->expansionRequests());
cmd.arg("typeformats", handler->typeFormatRequests()); cmd.arg("typeformats", handler->typeFormatRequests());
cmd.arg("formats", handler->individualFormatRequests()); cmd.arg("formats", handler->individualFormatRequests());

View File

@@ -66,10 +66,6 @@ StackHandler::StackHandler()
m_canExpand = false; m_canExpand = false;
connect(action(OperateByInstruction), &QAction::triggered, connect(action(OperateByInstruction), &QAction::triggered,
this, &StackHandler::resetModel); this, &StackHandler::resetModel);
if (isNativeMixedEnabled())
connect(action(OperateNativeMixed), &QAction::triggered,
this, &StackHandler::resetModel);
} }
StackHandler::~StackHandler() StackHandler::~StackHandler()