Commit fc01d0ac authored by hjk's avatar hjk

Debugger: Use new shared result reporting infrastructure

Unify the watchPoint() interfaces, move the combined
implementation to the DebuggerEngine base.

Change-Id: Ic93aa760e7258197aed5eb7bfea257a40012cccf
Reviewed-by: default avatarhjk <hjk@qt.io>
parent 5c2a7b57
......@@ -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 &)
......
......@@ -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);
......
......@@ -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:
......
......@@ -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);
......
......@@ -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());
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment