DAP: Add attach option to Python engine

Change-Id: I3f7254387904441fa28ffb797646b81d100bf9e9
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Artem Sokolovskii
2023-09-18 14:51:55 +02:00
parent fc9059d180
commit 16018b3834
2 changed files with 15 additions and 4 deletions

View File

@@ -209,6 +209,11 @@ void installDebugpyPackage(const FilePath &pythonPath)
process.waitForFinished(); process.waitForFinished();
} }
bool PyDapEngine::isLocalAttachEngine() const
{
return runParameters().startMode == AttachToLocalProcess;
}
void PyDapEngine::setupEngine() void PyDapEngine::setupEngine()
{ {
QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state());
@@ -245,10 +250,15 @@ void PyDapEngine::setupEngine()
CommandLine cmd{interpreter, CommandLine cmd{interpreter,
{"-Xfrozen_modules=off", {"-Xfrozen_modules=off",
"-m", "debugpy", "-m", "debugpy",
"--listen", "127.0.0.1:5679", "--listen", "127.0.0.1:5679"}};
"--wait-for-client",
if (isLocalAttachEngine()) {
cmd.addArgs({"--pid", QString::number(runParameters().attachPID.pid())});
} else {
cmd.addArgs({"--wait-for-client",
scriptFile.path(), scriptFile.path(),
runParameters().inferior.workingDirectory.path()}}; runParameters().inferior.workingDirectory.path()});
}
IDataProvider *dataProvider IDataProvider *dataProvider
= new TcpSocketDataProvider(runParameters(), cmd, "127.0.0.1", 5679, this); = new TcpSocketDataProvider(runParameters(), cmd, "127.0.0.1", 5679, this);

View File

@@ -17,8 +17,9 @@ private:
void quitDebugger() override; void quitDebugger() override;
void setupEngine() override; void setupEngine() override;
Utils::Process m_proc; bool isLocalAttachEngine() const;
Utils::Process m_proc;
const QLoggingCategory &logCategory() override const QLoggingCategory &logCategory() override
{ {
static const QLoggingCategory logCategory = QLoggingCategory("qtc.dbg.dapengine.python", static const QLoggingCategory logCategory = QLoggingCategory("qtc.dbg.dapengine.python",