From fc01d0ac4609bef0845db6441331eeed2e0f0785 Mon Sep 17 00:00:00 2001 From: hjk <hjk@qt.io> Date: Thu, 15 Dec 2016 18:30:05 +0100 Subject: [PATCH] Debugger: Use new shared result reporting infrastructure Unify the watchPoint() interfaces, move the combined implementation to the DebuggerEngine base. Change-Id: Ic93aa760e7258197aed5eb7bfea257a40012cccf Reviewed-by: hjk <hjk@qt.io> --- src/plugins/debugger/debuggerengine.cpp | 16 ++++++++++++++-- src/plugins/debugger/debuggerengine.h | 2 +- src/plugins/debugger/gdb/gdbengine.cpp | 23 ----------------------- src/plugins/debugger/gdb/gdbengine.h | 3 --- src/plugins/debugger/lldb/lldbengine.cpp | 16 ---------------- src/plugins/debugger/lldb/lldbengine.h | 3 --- 6 files changed, 15 insertions(+), 48 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index f23da12034d..5193aae6214 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1513,8 +1513,20 @@ void DebuggerEngine::selectWatchData(const QString &) { } -void DebuggerEngine::watchPoint(const QPoint &) -{ +void DebuggerEngine::watchPoint(const QPoint &pnt) +{ + DebuggerCommand cmd("watchPoint", NeedsFullStop); + cmd.arg("x", pnt.x()); + cmd.arg("y", pnt.y()); + cmd.callback = [this](const DebuggerResponse &response) { + qulonglong addr = response.data["selected"].toAddress(); + if (addr == 0) + showStatusMessage(tr("Could not find a widget.")); + // Add the watcher entry nevertheless, as that's the place where + // the user expects visual feedback. + watchHandler()->watchExpression(response.data["expr"].data(), QString(), true); + }; + runCommand(cmd); } void DebuggerEngine::runCommand(const DebuggerCommand &) diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index bf1c9749137..b1665989bee 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -220,7 +220,7 @@ public: virtual void startDebugger(DebuggerRunControl *runControl); virtual void prepareForRestart() {} - virtual void watchPoint(const QPoint &); + virtual void watchPoint(const QPoint &pnt); virtual void runCommand(const DebuggerCommand &cmd); virtual void openMemoryView(const MemoryViewSetupData &data); virtual void fetchMemory(MemoryAgent *, quint64 addr, quint64 length); diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 4c68489a586..9a0c7524957 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3615,29 +3615,6 @@ void GdbEngine::assignValueInDebugger(WatchItem *item, runCommand(cmd); } -void GdbEngine::watchPoint(const QPoint &pnt) -{ - DebuggerCommand cmd("watchPoint", NeedsFullStop); - cmd.arg("x", pnt.x()); - cmd.arg("y", pnt.y()); - cmd.callback = CB(handleWatchPoint); - runCommand(cmd); -} - -void GdbEngine::handleWatchPoint(const DebuggerResponse &response) -{ - if (response.resultClass == ResultDone) { - GdbMi res; - res.fromString(response.consoleStreamOutput); - qulonglong addr = res["selected"].toAddress(); - if (addr == 0) - showStatusMessage(tr("Could not find a widget.")); - // Add the watcher entry nevertheless, as that's the place where - // the user expects visual feedback. - watchHandler()->watchExpression(res["expr"].data(), QString(), true); - } -} - class MemoryAgentCookie { public: diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index e03d3ab4e6c..b60b3df2c09 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -355,9 +355,6 @@ protected: void changeMemory(MemoryAgent *agent, quint64 addr, const QByteArray &data) override; void handleFetchMemory(const DebuggerResponse &response, MemoryAgentCookie ac); - void watchPoint(const QPoint &) override; - void handleWatchPoint(const DebuggerResponse &response); - void showToolTip(); void handleVarAssign(const DebuggerResponse &response); diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index d531c7fd4b8..651a4396ae8 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -148,22 +148,6 @@ void LldbEngine::debugLastCommand() runCommand(m_lastDebuggableCommand); } -void LldbEngine::watchPoint(const QPoint &pnt) -{ - DebuggerCommand cmd("watchPoint", NeedsFullStop); - cmd.arg("x", pnt.x()); - cmd.arg("y", pnt.y()); - cmd.callback = [this](const DebuggerResponse &response) { - qulonglong addr = response.data["selected"].toAddress(); - if (addr == 0) - showStatusMessage(tr("Could not find a widget.")); - // Add the watcher entry nevertheless, as that's the place where - // the user expects visual feedback. - watchHandler()->watchExpression(response.data["expr"].data(), QString(), true); - }; - runCommand(cmd); -} - void LldbEngine::shutdownInferior() { QTC_ASSERT(state() == InferiorShutdownRequested, qDebug() << state()); diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h index 9fd9d8217e7..eb653b48a5b 100644 --- a/src/plugins/debugger/lldb/lldbengine.h +++ b/src/plugins/debugger/lldb/lldbengine.h @@ -144,9 +144,6 @@ private: void runCommand(const DebuggerCommand &cmd) override; void debugLastCommand() override; - void watchPoint(const QPoint &) override; - void handleWatchPoint(const DebuggerResponse &response); - private: DebuggerCommand m_lastDebuggableCommand; -- GitLab