diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-09-01 16:06:29 +0200 |
---|---|---|
committer | hjk <hjk121@nokiamail.com> | 2014-09-02 15:31:36 +0200 |
commit | e8305e3ed2349b95c7311c296febc6d75f1a0c2a (patch) | |
tree | 889c654ff6165c518eb87cdd742d87f11a13e335 /src | |
parent | 2a6491233c7b4d967f00807336cdcfa97c342c6e (diff) | |
download | qt-creator-e8305e3ed2349b95c7311c296febc6d75f1a0c2a.tar.gz |
RemoteLinux: Fix mixed debugging.
The QML part was broken due to recent changes relating to gdbserver
"multi" mode.
Task-number: QTCREATORBUG-12928
Change-Id: Ia806f0cbfedd6961138f7cd89a0387bd851ff83e
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/debugger/gdb/remotegdbserveradapter.cpp | 32 | ||||
-rw-r--r-- | src/plugins/remotelinux/remotelinuxdebugsupport.cpp | 11 |
2 files changed, 25 insertions, 18 deletions
diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index ca6e95771d..8d90c6c104 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -480,21 +480,27 @@ void GdbRemoteServerEngine::notifyEngineRemoteSetupDone(int gdbServerPort, int q QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); DebuggerEngine::notifyEngineRemoteSetupDone(gdbServerPort, qmlPort); - if (m_isMulti) { - // Has been done in notifyEngineRemoteServerRunning - } else { - if (qmlPort != -1) - startParameters().qmlServerPort = qmlPort; - if (gdbServerPort != -1) { - QString &rc = startParameters().remoteChannel; - const int sepIndex = rc.lastIndexOf(QLatin1Char(':')); - if (sepIndex != -1) { - rc.replace(sepIndex + 1, rc.count() - sepIndex - 1, - QString::number(gdbServerPort)); - } + DebuggerStartParameters ¶ms = isMasterEngine() + ? startParameters() : masterEngine()->startParameters(); + if (gdbServerPort != -1) { + QString &rc = params.remoteChannel; + const int sepIndex = rc.lastIndexOf(QLatin1Char(':')); + if (sepIndex != -1) { + rc.replace(sepIndex + 1, rc.count() - sepIndex - 1, + QString::number(gdbServerPort)); } - startGdb(); } + if (qmlPort != -1) { + params.qmlServerPort = qmlPort; + params.processArgs.replace(_("%qml_port%"), QString::number(qmlPort)); + } + + // TODO: Aren't these redundant? + m_isMulti = params.multiProcess; + m_targetPid = -1; + m_serverChannel = params.remoteChannel.toLatin1(); + + startGdb(); } void GdbRemoteServerEngine::notifyEngineRemoteSetupFailed(const QString &reason) diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index 58cd4e5c13..e6ecb1de65 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -42,6 +42,7 @@ #include <projectexplorer/devicesupport/deviceapplicationrunner.h> #include <utils/qtcassert.h> +#include <utils/qtcprocess.h> #include <QPointer> @@ -60,7 +61,6 @@ public: : engine(engine), qmlDebugging(runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>()->useQmlDebugger()), cppDebugging(runConfig->extraAspect<Debugger::DebuggerRunConfigurationAspect>()->useCppDebugger()), - target(DeviceKitInformation::device(runConfig->target()->kit())->sshParameters().host.toLatin1()), gdbServerPort(-1), qmlPort(-1) { } @@ -69,7 +69,6 @@ public: bool qmlDebugging; bool cppDebugging; QByteArray gdbserverOutput; - QByteArray target; int gdbServerPort; int qmlPort; }; @@ -99,8 +98,12 @@ DebuggerStartParameters LinuxDeviceDebugSupport::startParameters(const AbstractR params.qmlServerPort = 0; // port is selected later on } if (aspect->useCppDebugger()) { + params.multiProcess = true; params.languages |= CppLanguage; - params.processArgs = runConfig->arguments().join(QLatin1String(" ")); + QStringList args = runConfig->arguments(); + if (aspect->useQmlDebugger()) + args.prepend(QString::fromLatin1("-qmljsdebugger=port:%qml_port%,block")); + params.processArgs = Utils::QtcProcess::joinArgs(args, Utils::OsTypeLinux); params.startMode = AttachToRemoteServer; params.executable = runConfig->localExecutableFilePath(); params.remoteChannel = device->sshParameters().host + QLatin1String(":-1"); @@ -265,8 +268,6 @@ void LinuxDeviceDebugSupport::handleAdapterSetupFailed(const QString &error) void LinuxDeviceDebugSupport::handleAdapterSetupDone() { AbstractRemoteLinuxRunSupport::handleAdapterSetupDone(); - QByteArray remote = d->target + ':' + QByteArray::number(d->gdbServerPort); - d->engine->notifyEngineRemoteServerRunning(remote, -1); d->engine->notifyEngineRemoteSetupDone(d->gdbServerPort, d->qmlPort); } |