DAP: Add engine chooser

The Engine Chooser empowers users to select the desired
debugging engine when initiating DAP debugging sessions.

Change-Id: I070ff2620b318494ee715c5ac369765d4a9dc616
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Artem Sokolovskii
2023-08-18 15:17:11 +02:00
parent b80cef815e
commit d304e82e63
15 changed files with 300 additions and 95 deletions

View File

@@ -5,6 +5,8 @@
#include "dapclient.h"
#include <coreplugin/messagemanager.h>
#include <debugger/debuggermainwindow.h>
#include <utils/temporarydirectory.h>
@@ -16,6 +18,7 @@
#include <QDebug>
#include <QLocalSocket>
#include <QLoggingCategory>
#include <QVersionNumber>
using namespace Core;
using namespace Utils;
@@ -82,7 +85,8 @@ GdbDapEngine::GdbDapEngine()
: DapEngine()
{
setObjectName("GdbDapEngine");
setDebuggerName("GdbDAP");
setDebuggerName("Gdb");
setDebuggerType("DAP");
}
void GdbDapEngine::setupEngine()
@@ -92,6 +96,16 @@ void GdbDapEngine::setupEngine()
const DebuggerRunParameters &rp = runParameters();
const CommandLine cmd{rp.debugger.command.executable(), {"-i", "dap"}};
QVersionNumber oldestVersion(14, 0, 50);
QVersionNumber version = QVersionNumber::fromString(rp.version);
if (version < oldestVersion) {
notifyEngineSetupFailed();
MessageManager::writeDisrupting("Debugger version " + rp.version
+ " is too old. Please upgrade to at least "
+ oldestVersion.toString());
return;
}
IDataProvider *dataProvider = new ProcessDataProvider(rp, cmd, this);
m_dapClient = new DapClient(dataProvider, this);