summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Nätterlund <tobias.naetterlund.qnx@kdab.com>2014-02-11 10:55:24 +0100
committerTobias Nätterlund <tobias.naetterlund@kdab.com>2014-02-12 08:30:52 +0100
commite8d4349c37567f2714d170cabebcb5dcbb3930ca (patch)
tree20ad2c2757d5f63c1bdbeaff68b58e860b98b949
parentcdc2a0f72334268684e0407e9b04b3188e00d4bf (diff)
downloadqt-creator-e8d4349c37567f2714d170cabebcb5dcbb3930ca.tar.gz
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>
-rw-r--r--src/plugins/qnx/qnxanalyzesupport.cpp27
-rw-r--r--src/plugins/qnx/qnxanalyzesupport.h7
-rw-r--r--src/plugins/qnx/qnxruncontrolfactory.cpp1
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 <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);
+}
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();