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.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")

View File

@@ -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; });

View File

@@ -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());

View File

@@ -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()