From cc611e076f1a7901be2cc8ebae877d7aa4730294 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 29 May 2013 14:54:47 +0200 Subject: [PATCH] Debugger: Pass autoderef pointers down to LLDB machinery Change-Id: I282e78c352066ddd05e96199fd8ead088e3e9f56 Reviewed-by: hjk --- share/qtcreator/dumper/lbridge.py | 1 + src/plugins/debugger/lldb/lldbengine.cpp | 25 +++++++++++++++++++----- src/plugins/debugger/lldb/lldbengine.h | 4 ++-- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/share/qtcreator/dumper/lbridge.py b/share/qtcreator/dumper/lbridge.py index 609504316c8..4c33702b2de 100644 --- a/share/qtcreator/dumper/lbridge.py +++ b/share/qtcreator/dumper/lbridge.py @@ -504,6 +504,7 @@ class Dumper: self.useLldbDumpers = False self.ns = "" self.autoDerefPointers = True + self.useDynamicType = True self.useLoop = True self.currentIName = None diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 4af3b763802..1680a182962 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -84,6 +84,17 @@ LldbEngine::LldbEngine(const DebuggerStartParameters &startParameters) m_lastAgentId = 0; m_lastToken = 0; setObjectName(QLatin1String("LldbEngine")); + + connect(debuggerCore()->action(AutoDerefPointers), SIGNAL(valueChanged(QVariant)), + SLOT(updateLocals())); + connect(debuggerCore()->action(CreateFullBacktrace), SIGNAL(triggered()), + SLOT(updateAll())); + connect(debuggerCore()->action(UseDebuggingHelpers), SIGNAL(valueChanged(QVariant)), + SLOT(updateLocals())); + connect(debuggerCore()->action(UseDynamicType), SIGNAL(valueChanged(QVariant)), + SLOT(updateLocals())); + connect(debuggerCore()->action(IntelFlavor), SIGNAL(valueChanged(QVariant)), + SLOT(updateAll())); } LldbEngine::~LldbEngine() @@ -654,6 +665,10 @@ bool LldbEngine::setToolTipExpression(const QPoint &mousePos, return false; } +void LldbEngine::updateAll() +{ + updateLocals(); +} ////////////////////////////////////////////////////////////////////// // @@ -677,6 +692,11 @@ void LldbEngine::updateWatchData(const WatchData &data, const WatchUpdateFlags & { Q_UNUSED(data); Q_UNUSED(flags); + updateLocals(); +} + +void LldbEngine::updateLocals() +{ WatchHandler *handler = watchHandler(); Command cmd("updateData"); @@ -873,11 +893,6 @@ QByteArray LldbEngine::currentOptions() const return result; } -void LldbEngine::updateAll() -{ - runCommand("reportData"); -} - void LldbEngine::refreshLocals(const GdbMi &vars) { //const bool partial = response.cookie.toBool(); diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h index 82c58ea46d6..fe44c1940ad 100644 --- a/src/plugins/debugger/lldb/lldbengine.h +++ b/src/plugins/debugger/lldb/lldbengine.h @@ -153,6 +153,8 @@ private: Q_SLOT void readLldbStandardError(); Q_SLOT void handleResponse(const QByteArray &data); Q_SLOT void runEngine2(); + Q_SLOT void updateAll(); + Q_SLOT void updateLocals(); void refreshAll(const GdbMi &all); void refreshThreads(const GdbMi &threads); void refreshStack(const GdbMi &stack); @@ -167,8 +169,6 @@ private: void refreshBreakpoints(const GdbMi &bkpts); void runContinuation(const GdbMi &data); - void updateAll(); - typedef void (LldbEngine::*LldbCommandContinuation)(); QByteArray currentOptions() const;