forked from qt-creator/qt-creator
QNX: Fix QML analyzer on pure QNX targets
Change-Id: Ib67b696b7938eb4de1b67b211b7f529651cdb99a Reviewed-by: Aurindam Jana <aurindam.jana@digia.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
This commit is contained in:
committed by
Tobias Nätterlund
parent
cdc2a0f723
commit
e8d4349c37
@@ -29,13 +29,21 @@
|
||||
|
||||
#include "qnxanalyzesupport.h"
|
||||
|
||||
#include "qnxdeviceconfiguration.h"
|
||||
#include "qnxrunconfiguration.h"
|
||||
#include "slog2inforunner.h"
|
||||
|
||||
#include <analyzerbase/analyzerruncontrol.h>
|
||||
#include <analyzerbase/analyzerstartparameters.h>
|
||||
#include <projectexplorer/devicesupport/deviceapplicationrunner.h>
|
||||
#include <projectexplorer/kitinformation.h>
|
||||
#include <projectexplorer/target.h>
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/qtcprocess.h>
|
||||
|
||||
#include <QFileInfo>
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
|
||||
using namespace Qnx;
|
||||
@@ -59,6 +67,16 @@ QnxAnalyzeSupport::QnxAnalyzeSupport(QnxRunConfiguration *runConfig,
|
||||
SLOT(handleAdapterSetupRequested()));
|
||||
connect(&m_outputParser, SIGNAL(waitingForConnectionOnPort(quint16)),
|
||||
SLOT(remoteIsRunning()));
|
||||
|
||||
ProjectExplorer::IDevice::ConstPtr dev = ProjectExplorer::DeviceKitInformation::device(runConfig->target()->kit());
|
||||
QnxDeviceConfiguration::ConstPtr qnxDevice = dev.dynamicCast<const QnxDeviceConfiguration>();
|
||||
|
||||
const QString applicationId = QFileInfo(runConfig->remoteExecutableFilePath()).fileName();
|
||||
m_slog2Info = new Slog2InfoRunner(applicationId, qnxDevice, this);
|
||||
connect(m_slog2Info, SIGNAL(output(QString,Utils::OutputFormat)), this, SLOT(showMessage(QString,Utils::OutputFormat)));
|
||||
connect(runner, SIGNAL(remoteProcessStarted()), m_slog2Info, SLOT(start()));
|
||||
if (qnxDevice->qnxVersion() > 0x060500)
|
||||
connect(m_slog2Info, SIGNAL(commandMissing()), this, SLOT(printMissingWarning()));
|
||||
}
|
||||
|
||||
void QnxAnalyzeSupport::handleAdapterSetupRequested()
|
||||
@@ -89,13 +107,15 @@ void QnxAnalyzeSupport::startExecution()
|
||||
|
||||
void QnxAnalyzeSupport::handleRemoteProcessFinished(bool success)
|
||||
{
|
||||
if (m_runControl || state() == Inactive)
|
||||
if (!m_runControl)
|
||||
return;
|
||||
|
||||
if (!success)
|
||||
showMessage(tr("The %1 process closed unexpectedly.").arg(executable()),
|
||||
Utils::NormalMessageFormat);
|
||||
m_runControl->notifyRemoteFinished(success);
|
||||
|
||||
m_slog2Info->stop();
|
||||
}
|
||||
|
||||
void QnxAnalyzeSupport::handleProfilingFinished()
|
||||
@@ -137,3 +157,8 @@ void QnxAnalyzeSupport::showMessage(const QString &msg, Utils::OutputFormat form
|
||||
m_runControl->logApplicationMessage(msg, format);
|
||||
m_outputParser.processOutput(msg);
|
||||
}
|
||||
|
||||
void QnxAnalyzeSupport::printMissingWarning()
|
||||
{
|
||||
showMessage(tr("Warning: \"slog2info\" is not found on the device, debug output not available!"), Utils::ErrorMessageFormat);
|
||||
}
|
||||
|
@@ -42,6 +42,7 @@ namespace Qnx {
|
||||
namespace Internal {
|
||||
|
||||
class QnxRunConfiguration;
|
||||
class Slog2InfoRunner;
|
||||
|
||||
class QnxAnalyzeSupport : public QnxAbstractRunSupport
|
||||
{
|
||||
@@ -60,15 +61,19 @@ private slots:
|
||||
void handleRemoteOutput(const QByteArray &output);
|
||||
void handleError(const QString &error);
|
||||
|
||||
void showMessage(const QString &, Utils::OutputFormat);
|
||||
void printMissingWarning();
|
||||
|
||||
void remoteIsRunning();
|
||||
|
||||
private:
|
||||
void startExecution();
|
||||
void showMessage(const QString &, Utils::OutputFormat);
|
||||
|
||||
Analyzer::AnalyzerRunControl *m_runControl;
|
||||
QmlDebug::QmlOutputParser m_outputParser;
|
||||
int m_qmlPort;
|
||||
|
||||
Slog2InfoRunner *m_slog2Info;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
@@ -127,6 +127,7 @@ static AnalyzerStartParameters createAnalyzerStartParameters(const QnxRunConfigu
|
||||
|
||||
if (mode == QmlProfilerRunMode)
|
||||
params.startMode = StartLocal;
|
||||
params.runMode = mode;
|
||||
params.debuggee = runConfig->remoteExecutableFilePath();
|
||||
params.debuggeeArgs = runConfig->arguments().join(QLatin1String(" "));
|
||||
params.connParams = DeviceKitInformation::device(runConfig->target()->kit())->sshParameters();
|
||||
|
Reference in New Issue
Block a user