diff --git a/src/plugins/debugger/debuggerstartparameters.h b/src/plugins/debugger/debuggerstartparameters.h index ed3f9c4f2f5f2765183729f158746e727f0737cf..220229e4abe3614a2657b0556e65f67528283553 100644 --- a/src/plugins/debugger/debuggerstartparameters.h +++ b/src/plugins/debugger/debuggerstartparameters.h @@ -69,6 +69,7 @@ public: qmlServerPort(ProjectExplorer::Constants::QML_DEFAULT_DEBUG_SERVER_PORT), useServerStartScript(false), connParams(Utils::SshConnectionParameters::NoProxy), + requestRemoteSetup(false), startMode(NoStartMode), executableUid(0), communicationChannel(CommunicationChannelTcpIp), @@ -115,6 +116,7 @@ public: QString remoteMountPoint; QString localMountDir; Utils::SshConnectionParameters connParams; + bool requestRemoteSetup; QString debuggerCommand; ProjectExplorer::Abi toolChainAbi; diff --git a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp index 3b7bf8fb106f0a54f8b837597e622f279c681865..5c322c62c38a82b44f9b1709cf425f5cc87331d2 100644 --- a/src/plugins/debugger/gdb/remotegdbserveradapter.cpp +++ b/src/plugins/debugger/gdb/remotegdbserveradapter.cpp @@ -95,7 +95,10 @@ void RemoteGdbServerAdapter::startAdapter() m_uploadProc.waitForStarted(); } } - m_engine->requestRemoteSetup(); + if (startParameters().requestRemoteSetup) + m_engine->requestRemoteSetup(); + else + handleSetupDone(); } void RemoteGdbServerAdapter::uploadProcError(QProcess::ProcessError error) diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp index c332a8ec3b96557b27e5cf109e978143b6ca0cea..bd09d2d4e20b3fa3f59cee4f74ec8fae5aaa6596 100644 --- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp +++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp @@ -54,7 +54,16 @@ void RemotePlainGdbAdapter::startAdapter() { QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); showMessage(QLatin1String("TRYING TO START ADAPTER")); - m_engine->requestRemoteSetup(); + + if (!startParameters().workingDirectory.isEmpty()) + m_gdbProc.setWorkingDirectory(startParameters().workingDirectory); + if (startParameters().environment.size()) + m_gdbProc.setEnvironment(startParameters().environment.toStringList()); + + if (startParameters().requestRemoteSetup) + m_engine->requestRemoteSetup(); + else + handleRemoteSetupDone(startParameters().connParams.port, startParameters().qmlServerPort); } void RemotePlainGdbAdapter::setupInferior() @@ -106,10 +115,6 @@ void RemotePlainGdbAdapter::handleRemoteSetupDone(int gdbServerPort, int qmlPort if (qmlPort != -1) startParameters().qmlServerPort = qmlPort; - if (!startParameters().workingDirectory.isEmpty()) - m_gdbProc.setWorkingDirectory(startParameters().workingDirectory); - if (startParameters().environment.size()) - m_gdbProc.setEnvironment(startParameters().environment.toStringList()); m_gdbProc.realStart(m_engine->startParameters().debuggerCommand, QStringList() << QLatin1String("-i") << QLatin1String("mi"), m_engine->startParameters().executable); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index f66847f8bc44c460208d4304f18561dfee8cf0b0..d402fcbf04a87e530a71500804b0baf6640ca140 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -450,8 +450,7 @@ void QmlEngine::shutdownEngine() void QmlEngine::setupEngine() { - if (startParameters().startMode == AttachToQmlPort - || startParameters().startMode == AttachToRemoteServer) { + if (startParameters().requestRemoteSetup) { // we need to get the port first emit requestRemoteSetup(); } else { diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp index f0200e43be55dc8b479b75250fd203c35d07c909..1160ae9bd7a9ee5d734b5b4d9a2df41c78e56101 100644 --- a/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp +++ b/src/plugins/qt4projectmanager/qt-s60/s60devicedebugruncontrol.cpp @@ -84,10 +84,12 @@ static Debugger::DebuggerStartParameters s60DebuggerStartParams(const S60DeviceR sp.remoteChannel = activeDeployConf->serialPortName(); sp.processArgs = rc->commandLineArguments(); - if (rc->useQmlDebugger() && !rc->useCppDebugger()) + if (rc->useQmlDebugger() && !rc->useCppDebugger()) { + sp.requestRemoteSetup = true; sp.startMode = Debugger::AttachToRemoteServer; - else + } else { sp.startMode = Debugger::StartInternal; + } sp.toolChainAbi = rc->abi(); sp.executable = debugFileName; diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index 2135ad9ccad39902feb3ce5978698f931229fa93..35314964fa2bb8d905623e915f0205ad464acf7a 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -109,7 +109,7 @@ DebuggerStartParameters AbstractRemoteLinuxDebugSupport::startParameters(const R params.executable = runConfig->localExecutableFilePath(); params.debuggerCommand = runConfig->gdbCmd(); params.remoteChannel = devConf->sshParameters().host + QLatin1String(":-1"); - params.useServerStartScript = true; + params.requestRemoteSetup = true; // TODO: This functionality should be inside the debugger. const ProjectExplorer::Abi &abi = runConfig->target()