diff options
author | Aurindam Jana <aurindam.jana@digia.com> | 2013-05-06 09:10:22 +0200 |
---|---|---|
committer | Aurindam Jana <aurindam.jana@digia.com> | 2013-05-07 09:01:29 +0200 |
commit | e88ec44e71c798b59fbca7e3da91e0d832f184e5 (patch) | |
tree | 1651979f9f5015adfcb29656be36100993d846cf /src/plugins/remotelinux/remotelinuxdebugsupport.cpp | |
parent | 6e677a97fb5d49c6fd8a948a516e893a5fbb697a (diff) | |
download | qt-creator-e88ec44e71c798b59fbca7e3da91e0d832f184e5.tar.gz |
QmlProfiler: Remove RemoteLinux dependency
Change-Id: I3ff14691b4f9c80793a491b61444f8ceeb05a4fb
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
Diffstat (limited to 'src/plugins/remotelinux/remotelinuxdebugsupport.cpp')
-rw-r--r-- | src/plugins/remotelinux/remotelinuxdebugsupport.cpp | 129 |
1 files changed, 31 insertions, 98 deletions
diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index 308e99fd25..fa7d5f3ef0 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -36,12 +36,11 @@ #include <debugger/debuggerstartparameters.h> #include <debugger/debuggerkitinformation.h> #include <projectexplorer/buildconfiguration.h> -#include <projectexplorer/devicesupport/deviceusedportsgatherer.h> #include <projectexplorer/project.h> #include <projectexplorer/target.h> #include <projectexplorer/toolchain.h> #include <projectexplorer/devicesupport/deviceapplicationrunner.h> -#include <utils/portlist.h> + #include <utils/qtcassert.h> #include <QPointer> @@ -52,9 +51,6 @@ using namespace ProjectExplorer; namespace RemoteLinux { namespace Internal { -namespace { -enum State { Inactive, GatheringPorts, StartingRunner, Debugging }; -} // anonymous namespace class LinuxDeviceDebugSupportPrivate { @@ -64,12 +60,7 @@ public: : engine(engine), qmlDebugging(runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>()->useQmlDebugger()), cppDebugging(runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>()->useCppDebugger()), - state(Inactive), - gdbServerPort(-1), qmlPort(-1), - device(DeviceKitInformation::device(runConfig->target()->kit())), - remoteFilePath(runConfig->remoteExecutableFilePath()), - arguments(runConfig->arguments()), - commandPrefix(runConfig->commandPrefix()) + gdbServerPort(-1), qmlPort(-1) { } @@ -77,16 +68,8 @@ public: bool qmlDebugging; bool cppDebugging; QByteArray gdbserverOutput; - State state; int gdbServerPort; int qmlPort; - DeviceApplicationRunner appRunner; - DeviceUsedPortsGatherer portsGatherer; - const ProjectExplorer::IDevice::ConstPtr device; - Utils::PortList portList; - const QString remoteFilePath; - const QString arguments; - const QString commandPrefix; }; } // namespace Internal @@ -135,9 +118,9 @@ DebuggerStartParameters LinuxDeviceDebugSupport::startParameters(const RemoteLin return params; } -LinuxDeviceDebugSupport::LinuxDeviceDebugSupport(RunConfiguration *runConfig, +LinuxDeviceDebugSupport::LinuxDeviceDebugSupport(RemoteLinuxRunConfiguration *runConfig, DebuggerEngine *engine) - : QObject(engine), + : IRemoteLinuxRunSupport(runConfig, engine), d(new LinuxDeviceDebugSupportPrivate(static_cast<RemoteLinuxRunConfiguration *>(runConfig), engine)) { connect(d->engine, SIGNAL(requestRemoteSetup()), this, SLOT(handleRemoteSetupRequested())); @@ -145,96 +128,70 @@ LinuxDeviceDebugSupport::LinuxDeviceDebugSupport(RunConfiguration *runConfig, LinuxDeviceDebugSupport::~LinuxDeviceDebugSupport() { - setFinished(); delete d; } -void LinuxDeviceDebugSupport::setApplicationRunnerPreRunAction(DeviceApplicationHelperAction *action) -{ - d->appRunner.setPreRunAction(action); -} - -void LinuxDeviceDebugSupport::setApplicationRunnerPostRunAction(DeviceApplicationHelperAction *action) -{ - d->appRunner.setPostRunAction(action); -} - void LinuxDeviceDebugSupport::showMessage(const QString &msg, int channel) { - if (d->state != Inactive && d->engine) + if (state() != Inactive && d->engine) d->engine->showMessage(msg, channel); } void LinuxDeviceDebugSupport::handleRemoteSetupRequested() { - QTC_ASSERT(d->state == Inactive, return); + QTC_ASSERT(state() == Inactive, return); - d->state = GatheringPorts; showMessage(tr("Checking available ports...\n"), LogStatus); - connect(&d->portsGatherer, SIGNAL(error(QString)), SLOT(handlePortsGathererError(QString))); - connect(&d->portsGatherer, SIGNAL(portListReady()), SLOT(handlePortListReady())); - d->portsGatherer.start(d->device); -} - -void LinuxDeviceDebugSupport::handlePortsGathererError(const QString &message) -{ - QTC_ASSERT(d->state == GatheringPorts, return); - handleAdapterSetupFailed(message); -} - -void LinuxDeviceDebugSupport::handlePortListReady() -{ - QTC_ASSERT(d->state == GatheringPorts, return); - - d->portList = d->device->freePorts(); - startExecution(); + IRemoteLinuxRunSupport::handleRemoteSetupRequested(); } void LinuxDeviceDebugSupport::startExecution() { - QTC_ASSERT(d->state == GatheringPorts, return); + QTC_ASSERT(state() == GatheringPorts, return); if (d->cppDebugging && !setPort(d->gdbServerPort)) return; if (d->qmlDebugging && !setPort(d->qmlPort)) return; - d->state = StartingRunner; + setState(StartingRunner); d->gdbserverOutput.clear(); - connect(&d->appRunner, SIGNAL(remoteStderr(QByteArray)), - SLOT(handleRemoteErrorOutput(QByteArray))); - connect(&d->appRunner, SIGNAL(remoteStdout(QByteArray)), SLOT(handleRemoteOutput(QByteArray))); + DeviceApplicationRunner *runner = appRunner(); + connect(runner, SIGNAL(remoteStderr(QByteArray)), SLOT(handleRemoteErrorOutput(QByteArray))); + connect(runner, SIGNAL(remoteStdout(QByteArray)), SLOT(handleRemoteOutput(QByteArray))); if (d->qmlDebugging && !d->cppDebugging) - connect(&d->appRunner, SIGNAL(remoteProcessStarted()), SLOT(handleRemoteProcessStarted())); - QString args = d->arguments; + connect(runner, SIGNAL(remoteProcessStarted()), SLOT(handleRemoteProcessStarted())); + QString args = arguments(); if (d->qmlDebugging) args += QString::fromLocal8Bit(" -qmljsdebugger=port:%1,block").arg(d->qmlPort); const QString remoteCommandLine = (d->qmlDebugging && !d->cppDebugging) - ? QString::fromLatin1("%1 %2 %3").arg(d->commandPrefix).arg(d->remoteFilePath).arg(args) - : QString::fromLatin1("%1 gdbserver :%2 %3 %4").arg(d->commandPrefix) - .arg(d->gdbServerPort).arg(d->remoteFilePath).arg(args); - connect(&d->appRunner, SIGNAL(finished(bool)), SLOT(handleAppRunnerFinished(bool))); - d->appRunner.start(d->device, remoteCommandLine.toUtf8()); + ? QString::fromLatin1("%1 %2 %3").arg(commandPrefix()).arg(remoteFilePath()).arg(args) + : QString::fromLatin1("%1 gdbserver :%2 %3 %4").arg(commandPrefix()) + .arg(d->gdbServerPort).arg(remoteFilePath()).arg(args); + connect(runner, SIGNAL(finished(bool)), SLOT(handleAppRunnerFinished(bool))); + connect(runner, SIGNAL(reportProgress(QString)), SLOT(handleProgressReport(QString))); + connect(runner, SIGNAL(reportError(QString)), SLOT(handleAppRunnerError(QString))); + runner->start(device(), remoteCommandLine.toUtf8()); } void LinuxDeviceDebugSupport::handleAppRunnerError(const QString &error) { - if (d->state == Debugging) { + if (state() == Running) { showMessage(error, AppError); if (d->engine) d->engine->notifyInferiorIll(); - } else if (d->state != Inactive) { + } else if (state() != Inactive) { handleAdapterSetupFailed(error); } } void LinuxDeviceDebugSupport::handleAppRunnerFinished(bool success) { - if (!d->engine || d->state == Inactive) + if (!d->engine || state() == Inactive) return; - if (d->state == Debugging) { + if (state() == Running) { // The QML engine does not realize on its own that the application has finished. if (d->qmlDebugging && !d->cppDebugging) d->engine->quitDebugger(); @@ -253,20 +210,20 @@ void LinuxDeviceDebugSupport::handleDebuggingFinished() void LinuxDeviceDebugSupport::handleRemoteOutput(const QByteArray &output) { - QTC_ASSERT(d->state == Inactive || d->state == Debugging, return); + QTC_ASSERT(state() == Inactive || state() == Running, return); showMessage(QString::fromUtf8(output), AppOutput); } void LinuxDeviceDebugSupport::handleRemoteErrorOutput(const QByteArray &output) { - QTC_ASSERT(d->state != GatheringPorts, return); + QTC_ASSERT(state() != GatheringPorts, return); if (!d->engine) return; showMessage(QString::fromUtf8(output), AppError); - if (d->state == StartingRunner && d->cppDebugging) { + if (state() == StartingRunner && d->cppDebugging) { d->gdbserverOutput += output; if (d->gdbserverOutput.contains("Listening on port")) { handleAdapterSetupDone(); @@ -282,46 +239,22 @@ void LinuxDeviceDebugSupport::handleProgressReport(const QString &progressOutput void LinuxDeviceDebugSupport::handleAdapterSetupFailed(const QString &error) { - setFinished(); + IRemoteLinuxRunSupport::handleAdapterSetupFailed(error); d->engine->notifyEngineRemoteSetupFailed(tr("Initial setup failed: %1").arg(error)); } void LinuxDeviceDebugSupport::handleAdapterSetupDone() { - d->state = Debugging; + IRemoteLinuxRunSupport::handleAdapterSetupDone(); d->engine->notifyEngineRemoteSetupDone(d->gdbServerPort, d->qmlPort); } void LinuxDeviceDebugSupport::handleRemoteProcessStarted() { QTC_ASSERT(d->qmlDebugging && !d->cppDebugging, return); - QTC_ASSERT(d->state == StartingRunner, return); + QTC_ASSERT(state() == StartingRunner, return); handleAdapterSetupDone(); } -void LinuxDeviceDebugSupport::setFinished() -{ - if (d->state == Inactive) - return; - d->portsGatherer.disconnect(this); - d->appRunner.disconnect(this); - if (d->state == StartingRunner) { - const QString stopCommand - = d->device->processSupport()->killProcessByNameCommandLine(d->remoteFilePath); - d->appRunner.stop(stopCommand.toUtf8()); - } - d->state = Inactive; -} - -bool LinuxDeviceDebugSupport::setPort(int &port) -{ - port = d->portsGatherer.getNextFreePort(&d->portList); - if (port == -1) { - handleAdapterSetupFailed(tr("Not enough free ports on device for debugging.")); - return false; - } - return true; -} - } // namespace RemoteLinux |