diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index e1346f9639d..7d846abde56 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -149,6 +149,8 @@ #include #include #include +#include +#include #include #ifdef WITH_TESTS @@ -2152,6 +2154,29 @@ void DebuggerPlugin::attachExternalApplication(RunControl *rc) createAndScheduleRun(rp, kit); } +void DebuggerPlugin::getEnginesState(QByteArray *json) const +{ + QTC_ASSERT(json, return); + QVariantMap result { + { "version", 1 } + }; + QVariantMap states; + + for (int i = 0; i < dd->m_snapshotHandler->size(); ++i) { + const DebuggerEngine *engine = dd->m_snapshotHandler->at(i); + states[QString::number(i)] = QVariantMap({ + { "current", dd->m_snapshotHandler->currentIndex() == i }, + { "pid", engine->inferiorPid() }, + { "state", engine->state() } + }); + } + + if (!states.isEmpty()) + result["states"] = states; + + *json = QJsonDocument(QJsonObject::fromVariantMap(result)).toJson(); +} + void DebuggerPluginPrivate::attachToQmlPort() { DebuggerRunParameters rp; diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h index 50909608608..16ed5ff7e5c 100644 --- a/src/plugins/debugger/debuggerplugin.h +++ b/src/plugins/debugger/debuggerplugin.h @@ -56,6 +56,9 @@ private: // Called from AppOutputPane::attachToRunControl(). Q_SLOT void attachExternalApplication(ProjectExplorer::RunControl *rc); + // Called from GammaRayIntegration + Q_SLOT void getEnginesState(QByteArray *json) const; + QList createTestObjects() const override; };