aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/debugger/dap/dapengine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/debugger/dap/dapengine.h')
-rw-r--r--src/plugins/debugger/dap/dapengine.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/plugins/debugger/dap/dapengine.h b/src/plugins/debugger/dap/dapengine.h
new file mode 100644
index 00000000000..2fa3019cad9
--- /dev/null
+++ b/src/plugins/debugger/dap/dapengine.h
@@ -0,0 +1,98 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
+
+#pragma once
+
+#include <debugger/debuggerengine.h>
+#include <utils/process.h>
+
+#include <QVariant>
+
+namespace Debugger::Internal {
+
+class DebuggerCommand;
+class GdbMi;
+
+/*
+ * A debugger engine for the debugger adapter protocol.
+ */
+
+class DapEngine : public DebuggerEngine
+{
+public:
+ DapEngine();
+
+private:
+ void executeStepIn(bool) override;
+ void executeStepOut() override;
+ void executeStepOver(bool) override;
+
+ void setupEngine() override;
+ void shutdownInferior() override;
+ void shutdownEngine() override;
+
+ bool canHandleToolTip(const DebuggerToolTipContext &) const override;
+
+ void continueInferior() override;
+ void interruptInferior() override;
+
+ void executeRunToLine(const ContextData &data) override;
+ void executeRunToFunction(const QString &functionName) override;
+ void executeJumpToLine(const ContextData &data) override;
+
+ void activateFrame(int index) override;
+ void selectThread(const Thread &thread) override;
+
+ bool acceptsBreakpoint(const BreakpointParameters &bp) const override;
+ void insertBreakpoint(const Breakpoint &bp) override;
+ void updateBreakpoint(const Breakpoint &bp) override;
+ void removeBreakpoint(const Breakpoint &bp) override;
+
+ void assignValueInDebugger(WatchItem *item,
+ const QString &expr, const QVariant &value) override;
+ void executeDebuggerCommand(const QString &command) override;
+
+ void loadSymbols(const Utils::FilePath &moduleName) override;
+ void loadAllSymbols() override;
+ void requestModuleSymbols(const Utils::FilePath &moduleName) override;
+ void reloadModules() override;
+ void reloadRegisters() override {}
+ void reloadSourceFiles() override {}
+ void reloadFullStack() override {}
+
+ bool supportsThreads() const { return true; }
+ void updateItem(const QString &iname) override;
+
+ void runCommand(const DebuggerCommand &cmd) override;
+ void postDirectCommand(const QJsonObject &ob);
+
+ void refreshLocation(const GdbMi &reportedLocation);
+ void refreshStack(const GdbMi &stack);
+ void refreshLocals(const GdbMi &vars);
+ void refreshModules(const GdbMi &modules);
+ void refreshState(const GdbMi &reportedState);
+ void refreshSymbols(const GdbMi &symbols);
+
+ QString errorMessage(QProcess::ProcessError error) const;
+ bool hasCapability(unsigned cap) const override;
+
+ void claimInitialBreakpoints();
+
+ void handleDabStarted();
+ void handleDabLaunch();
+ void handleDabConfigurationDone();
+
+ void handleDapDone();
+ void readDapStandardOutput();
+ void readDapStandardError();
+ void handleOutput(const QJsonDocument &data);
+ void handleResponse(const QString &ba);
+ void updateAll() override;
+ void updateLocals() override;
+
+ QByteArray m_inbuffer;
+ Utils::Process m_proc;
+ int m_nextBreakpointId = 1;
+};
+
+} // Debugger::Internal