forked from qt-creator/qt-creator
Debugger: Enable 'native mixed' toogling also for LLDB
Change-Id: I50a026d6af2874aa78db98b0df1fcbe233c88b1b Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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; });
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user