Add api to get some debugger state about engines

That’s needed for GammaRay integration.

Change-Id: I67a5dba81fa8d88024395126c45d0a3e9cfdd457
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Filipe Azevedo
2017-01-13 13:18:39 +01:00
parent 6bcc657adb
commit 28fd07e95a
2 changed files with 28 additions and 0 deletions

View File

@@ -149,6 +149,8 @@
#include <QTreeWidget>
#include <QVBoxLayout>
#include <QVariant>
#include <QJsonDocument>
#include <QJsonObject>
#include <QtPlugin>
#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;

View File

@@ -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<QObject *> createTestObjects() const override;
};