forked from qt-creator/qt-creator
Debugger: Handle the <more> item in LLDB stack view
Task-number: QTCREATORBUG-11915 Change-Id: I7216987c68802c9d3b74fbd5b543ea4aa5953ff8 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
@@ -1169,7 +1169,6 @@ class Dumper(DumperBase):
|
|||||||
else:
|
else:
|
||||||
state = self.process.GetState()
|
state = self.process.GetState()
|
||||||
if state == lldb.eStateStopped:
|
if state == lldb.eStateStopped:
|
||||||
self.reportStack()
|
|
||||||
self.reportStackPosition()
|
self.reportStackPosition()
|
||||||
self.reportThreads()
|
self.reportThreads()
|
||||||
self.reportVariables()
|
self.reportVariables()
|
||||||
@@ -1259,7 +1258,6 @@ class Dumper(DumperBase):
|
|||||||
stoppedThread = self.firstStoppedThread()
|
stoppedThread = self.firstStoppedThread()
|
||||||
if stoppedThread:
|
if stoppedThread:
|
||||||
self.process.SetSelectedThread(stoppedThread)
|
self.process.SetSelectedThread(stoppedThread)
|
||||||
self.reportStack({'stacklimit': 20})
|
|
||||||
self.reportStackTop()
|
self.reportStackTop()
|
||||||
self.reportThreads()
|
self.reportThreads()
|
||||||
self.reportLocation()
|
self.reportLocation()
|
||||||
|
|||||||
@@ -491,15 +491,17 @@ void LldbEngine::activateFrame(int frameIndex)
|
|||||||
if (state() != InferiorStopOk && state() != InferiorUnrunnable)
|
if (state() != InferiorStopOk && state() != InferiorUnrunnable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int limit = debuggerCore()->action(MaximalStackDepth)->value().toInt();
|
const int n = stackHandler()->stackSize();
|
||||||
int n = stackHandler()->stackSize();
|
if (frameIndex == n) {
|
||||||
if (frameIndex == n)
|
Command cmd("reportStack");
|
||||||
limit = n * 10 + 3;
|
cmd.arg("stacklimit", n * 10 + 3);
|
||||||
|
runCommand(cmd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Command cmd("activateFrame");
|
Command cmd("activateFrame");
|
||||||
cmd.arg("index", frameIndex);
|
cmd.arg("index", frameIndex);
|
||||||
cmd.arg("thread", threadsHandler()->currentThread().raw());
|
cmd.arg("thread", threadsHandler()->currentThread().raw());
|
||||||
cmd.arg("stacklimit", limit);
|
|
||||||
runCommand(cmd);
|
runCommand(cmd);
|
||||||
|
|
||||||
updateAll();
|
updateAll();
|
||||||
@@ -883,9 +885,24 @@ bool LldbEngine::setToolTipExpression(const QPoint &mousePos,
|
|||||||
void LldbEngine::updateAll()
|
void LldbEngine::updateAll()
|
||||||
{
|
{
|
||||||
reloadRegisters();
|
reloadRegisters();
|
||||||
|
updateStack();
|
||||||
updateLocals();
|
updateLocals();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LldbEngine::reloadFullStack()
|
||||||
|
{
|
||||||
|
Command cmd("reportStack");
|
||||||
|
cmd.arg("stacklimit", -1);
|
||||||
|
runCommand(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LldbEngine::updateStack()
|
||||||
|
{
|
||||||
|
Command cmd("reportStack");
|
||||||
|
cmd.arg("stacklimit", 20);
|
||||||
|
runCommand(cmd);
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// Watch specific stuff
|
// Watch specific stuff
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ private:
|
|||||||
void reloadModules();
|
void reloadModules();
|
||||||
void reloadRegisters();
|
void reloadRegisters();
|
||||||
void reloadSourceFiles() {}
|
void reloadSourceFiles() {}
|
||||||
void reloadFullStack() {}
|
void reloadFullStack();
|
||||||
void fetchDisassembler(Internal::DisassemblerAgent *);
|
void fetchDisassembler(Internal::DisassemblerAgent *);
|
||||||
void refreshDisassembly(const GdbMi &data);
|
void refreshDisassembly(const GdbMi &data);
|
||||||
|
|
||||||
@@ -161,6 +161,7 @@ private:
|
|||||||
Q_SLOT void handleResponse(const QByteArray &data);
|
Q_SLOT void handleResponse(const QByteArray &data);
|
||||||
Q_SLOT void runEngine2();
|
Q_SLOT void runEngine2();
|
||||||
Q_SLOT void updateAll();
|
Q_SLOT void updateAll();
|
||||||
|
Q_SLOT void updateStack();
|
||||||
Q_SLOT void updateLocals();
|
Q_SLOT void updateLocals();
|
||||||
Q_SLOT void createFullBacktrace();
|
Q_SLOT void createFullBacktrace();
|
||||||
void doUpdateLocals(UpdateParameters params);
|
void doUpdateLocals(UpdateParameters params);
|
||||||
|
|||||||
Reference in New Issue
Block a user