forked from qt-creator/qt-creator
Qnx: Add support for QML Profiler
Change-Id: Ib87a39177120458155bbb657ff8c9b09e1a6ccb5 Reviewed-by: Tobias Nätterlund <tobias.naetterlund@kdab.com> Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include "qnxconstants.h"
|
||||
#include "qnxrunconfiguration.h"
|
||||
#include "qnxdebugsupport.h"
|
||||
#include "qnxanalyzesupport.h"
|
||||
#include "qnxqtversion.h"
|
||||
#include "qnxruncontrol.h"
|
||||
#include "qnxutils.h"
|
||||
@@ -44,6 +45,10 @@
|
||||
#include <debugger/debuggerrunconfigurationaspect.h>
|
||||
#include <debugger/debuggerstartparameters.h>
|
||||
#include <debugger/debuggerkitinformation.h>
|
||||
#include <analyzerbase/analyzerstartparameters.h>
|
||||
#include <analyzerbase/analyzermanager.h>
|
||||
#include <analyzerbase/analyzerruncontrol.h>
|
||||
#include <projectexplorer/environmentaspect.h>
|
||||
#include <projectexplorer/buildconfiguration.h>
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/target.h>
|
||||
@@ -51,6 +56,7 @@
|
||||
#include <qtsupport/qtkitinformation.h>
|
||||
#include <utils/portlist.h>
|
||||
|
||||
using namespace Analyzer;
|
||||
using namespace Debugger;
|
||||
using namespace ProjectExplorer;
|
||||
using namespace Qnx;
|
||||
@@ -107,6 +113,32 @@ DebuggerStartParameters createStartParameters(const QnxRunConfiguration *runConf
|
||||
return params;
|
||||
}
|
||||
|
||||
AnalyzerStartParameters createAnalyzerStartParameters(const QnxRunConfiguration *runConfig, RunMode mode)
|
||||
{
|
||||
AnalyzerStartParameters params;
|
||||
Target *target = runConfig->target();
|
||||
Kit *k = target->kit();
|
||||
|
||||
const IDevice::ConstPtr device = DeviceKitInformation::device(k);
|
||||
if (device.isNull())
|
||||
return params;
|
||||
|
||||
if (mode == QmlProfilerRunMode)
|
||||
params.startMode = StartQmlRemote;
|
||||
params.debuggee = runConfig->remoteExecutableFilePath();
|
||||
params.debuggeeArgs = runConfig->arguments();
|
||||
params.connParams = DeviceKitInformation::device(runConfig->target()->kit())->sshParameters();
|
||||
params.analyzerCmdPrefix = runConfig->commandPrefix();
|
||||
params.displayName = runConfig->displayName();
|
||||
params.sysroot = SysRootKitInformation::sysRoot(runConfig->target()->kit()).toString();
|
||||
params.analyzerHost = params.connParams.host;
|
||||
params.analyzerPort = params.connParams.port;
|
||||
|
||||
if (EnvironmentAspect *environment = runConfig->extraAspect<EnvironmentAspect>())
|
||||
params.environment = environment->environment();
|
||||
|
||||
return params;
|
||||
}
|
||||
|
||||
QnxRunControlFactory::QnxRunControlFactory(QObject *parent)
|
||||
: IRunControlFactory(parent)
|
||||
@@ -115,7 +147,7 @@ QnxRunControlFactory::QnxRunControlFactory(QObject *parent)
|
||||
|
||||
bool QnxRunControlFactory::canRun(RunConfiguration *runConfiguration, RunMode mode) const
|
||||
{
|
||||
if (mode != NormalRunMode && mode != DebugRunMode)
|
||||
if (mode != NormalRunMode && mode != DebugRunMode && mode != QmlProfilerRunMode)
|
||||
return false;
|
||||
|
||||
if (!runConfiguration->isEnabled()
|
||||
@@ -125,7 +157,7 @@ bool QnxRunControlFactory::canRun(RunConfiguration *runConfiguration, RunMode mo
|
||||
|
||||
|
||||
const QnxRunConfiguration * const rc = qobject_cast<QnxRunConfiguration *>(runConfiguration);
|
||||
if (mode == DebugRunMode) {
|
||||
if (mode == DebugRunMode || mode == QmlProfilerRunMode) {
|
||||
const QnxDeviceConfiguration::ConstPtr dev = DeviceKitInformation::device(runConfiguration->target()->kit())
|
||||
.dynamicCast<const QnxDeviceConfiguration>();
|
||||
if (dev.isNull())
|
||||
@@ -141,16 +173,38 @@ RunControl *QnxRunControlFactory::create(RunConfiguration *runConfig, RunMode mo
|
||||
|
||||
QnxRunConfiguration *rc = qobject_cast<QnxRunConfiguration *>(runConfig);
|
||||
Q_ASSERT(rc);
|
||||
if (mode == NormalRunMode)
|
||||
switch (mode) {
|
||||
case NormalRunMode:
|
||||
return new QnxRunControl(rc);
|
||||
case DebugRunMode: {
|
||||
const DebuggerStartParameters params = createStartParameters(rc);
|
||||
DebuggerRunControl * const runControl = DebuggerPlugin::createDebugger(params, rc, errorMessage);
|
||||
if (!runControl)
|
||||
return 0;
|
||||
|
||||
const DebuggerStartParameters params = createStartParameters(rc);
|
||||
DebuggerRunControl * const runControl = DebuggerPlugin::createDebugger(params, rc, errorMessage);
|
||||
if (!runControl)
|
||||
return 0;
|
||||
QnxDebugSupport *debugSupport = new QnxDebugSupport(rc, runControl->engine());
|
||||
connect(runControl, SIGNAL(finished()), debugSupport, SLOT(handleDebuggingFinished()));
|
||||
|
||||
QnxDebugSupport *debugSupport = new QnxDebugSupport(rc, runControl->engine());
|
||||
connect(runControl, SIGNAL(finished()), debugSupport, SLOT(handleDebuggingFinished()));
|
||||
|
||||
return runControl;
|
||||
return runControl;
|
||||
}
|
||||
case QmlProfilerRunMode: {
|
||||
IAnalyzerTool *tool = AnalyzerManager::toolFromRunMode(mode);
|
||||
if (!tool) {
|
||||
if (errorMessage)
|
||||
*errorMessage = tr("No analyzer tool selected.");
|
||||
return 0;
|
||||
}
|
||||
const AnalyzerStartParameters params = createAnalyzerStartParameters(rc, mode);
|
||||
AnalyzerRunControl * const runControl = new AnalyzerRunControl(tool, params, runConfig);
|
||||
QnxAnalyzeSupport * const analyzeSupport = new QnxAnalyzeSupport(rc, runControl->engine());
|
||||
connect(runControl, SIGNAL(finished()), analyzeSupport, SLOT(handleProfilingFinished()));
|
||||
return runControl;
|
||||
}
|
||||
case NoRunMode:
|
||||
case CallgrindRunMode:
|
||||
case MemcheckRunMode:
|
||||
case DebugRunModeWithBreakOnMain:
|
||||
QTC_ASSERT(false, return 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user