From e8d4349c37567f2714d170cabebcb5dcbb3930ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20N=C3=A4tterlund?= Date: Tue, 11 Feb 2014 10:55:24 +0100 Subject: QNX: Fix QML analyzer on pure QNX targets Change-Id: Ib67b696b7938eb4de1b67b211b7f529651cdb99a Reviewed-by: Aurindam Jana Reviewed-by: Nicolas Arnaud-Cormos --- src/plugins/qnx/qnxanalyzesupport.cpp | 27 ++++++++++++++++++++++++++- src/plugins/qnx/qnxanalyzesupport.h | 7 ++++++- src/plugins/qnx/qnxruncontrolfactory.cpp | 1 + 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/plugins/qnx/qnxanalyzesupport.cpp b/src/plugins/qnx/qnxanalyzesupport.cpp index 0916939767..9f61a6b3ff 100644 --- a/src/plugins/qnx/qnxanalyzesupport.cpp +++ b/src/plugins/qnx/qnxanalyzesupport.cpp @@ -29,13 +29,21 @@ #include "qnxanalyzesupport.h" +#include "qnxdeviceconfiguration.h" +#include "qnxrunconfiguration.h" +#include "slog2inforunner.h" + #include #include #include +#include +#include #include #include +#include + 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 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); +} diff --git a/src/plugins/qnx/qnxanalyzesupport.h b/src/plugins/qnx/qnxanalyzesupport.h index 4662cfaa99..197a11a5f2 100644 --- a/src/plugins/qnx/qnxanalyzesupport.h +++ b/src/plugins/qnx/qnxanalyzesupport.h @@ -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 diff --git a/src/plugins/qnx/qnxruncontrolfactory.cpp b/src/plugins/qnx/qnxruncontrolfactory.cpp index d96066eba3..b36343bc4f 100644 --- a/src/plugins/qnx/qnxruncontrolfactory.cpp +++ b/src/plugins/qnx/qnxruncontrolfactory.cpp @@ -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(); -- cgit v1.2.3