diff --git a/src/plugins/debugger/gdb/remotegdbprocess.cpp b/src/plugins/debugger/gdb/remotegdbprocess.cpp index 4f5657f54f6..eef201f140c 100644 --- a/src/plugins/debugger/gdb/remotegdbprocess.cpp +++ b/src/plugins/debugger/gdb/remotegdbprocess.cpp @@ -33,6 +33,8 @@ #include +#include + #include using namespace Core; @@ -67,10 +69,13 @@ void RemoteGdbProcess::start(const QString &cmd, const QStringList &args) QTC_ASSERT(m_gdbStarted, return); } -void RemoteGdbProcess::realStart(const QString &cmd, const QStringList &args) +void RemoteGdbProcess::realStart(const QString &cmd, const QStringList &args, + const QString &executableFilePath) { m_command = cmd; m_cmdArgs = args; + m_appOutputFileName = "app_output_" + + QFileInfo(executableFilePath).fileName().toUtf8(); m_gdbStarted = false; m_error.clear(); m_conn = SshConnection::create(); @@ -83,7 +88,7 @@ void RemoteGdbProcess::realStart(const QString &cmd, const QStringList &args) void RemoteGdbProcess::handleConnected() { m_fifoCreator = m_conn->createRemoteProcess( "rm -f " - + AppOutputFile + " && mkfifo " + AppOutputFile); + + m_appOutputFileName + " && mkfifo " + m_appOutputFileName); connect(m_fifoCreator.data(), SIGNAL(closed(int)), this, SLOT(handleFifoCreationFinished(int))); m_fifoCreator->start(); @@ -99,8 +104,8 @@ void RemoteGdbProcess::handleFifoCreationFinished(int exitStatus) if (exitStatus != SshRemoteProcess::ExitedNormally) { emitErrorExit(tr("Could not create FIFO.")); } else { - m_appOutputReader = m_conn->createRemoteProcess("cat " + AppOutputFile - + " && rm -f " + AppOutputFile); + m_appOutputReader = m_conn->createRemoteProcess("cat " + + m_appOutputFileName + " && rm -f " + m_appOutputFileName); connect(m_appOutputReader.data(), SIGNAL(started()), this, SLOT(handleAppOutputReaderStarted())); connect(m_appOutputReader.data(), SIGNAL(closed(int)), this, @@ -115,7 +120,7 @@ void RemoteGdbProcess::handleAppOutputReaderStarted() this, SLOT(handleAppOutput(QByteArray))); QByteArray cmdLine = "DISPLAY=:0.0 " + m_command.toUtf8() + ' ' + m_cmdArgs.join(QLatin1String(" ")).toUtf8() - + " -tty=" + AppOutputFile; + + " -tty=" + m_appOutputFileName; if (!m_wd.isEmpty()) cmdLine.prepend("cd " + m_wd.toUtf8() + " && "); m_gdbProc = m_conn->createRemoteProcess(cmdLine); @@ -303,7 +308,6 @@ void RemoteGdbProcess::emitErrorExit(const QString &error) } const QByteArray RemoteGdbProcess::CtrlC = QByteArray(1, 0x3); -const QByteArray RemoteGdbProcess::AppOutputFile("app_output"); } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/gdb/remotegdbprocess.h b/src/plugins/debugger/gdb/remotegdbprocess.h index e47a4a22841..22b99404f43 100644 --- a/src/plugins/debugger/gdb/remotegdbprocess.h +++ b/src/plugins/debugger/gdb/remotegdbprocess.h @@ -67,7 +67,8 @@ public: virtual void setWorkingDirectory(const QString &dir); void interruptInferior(); - void realStart(const QString &cmd, const QStringList &args); + void realStart(const QString &cmd, const QStringList &args, + const QString &executableFilePath); static const QByteArray CtrlC; @@ -95,8 +96,6 @@ private: QByteArray removeCarriageReturn(const QByteArray &data); void emitErrorExit(const QString &error); - static const QByteArray AppOutputFile; - Core::SshConnectionParameters m_connParams; Core::SshConnection::Ptr m_conn; Core::SshRemoteProcess::Ptr m_gdbProc; @@ -112,6 +111,7 @@ private: QByteArray m_lastSeqNr; QString m_error; bool m_gdbStarted; + QByteArray m_appOutputFileName; RemotePlainGdbAdapter *m_adapter; }; diff --git a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp index 88b6bc78e2e..159f007c10a 100644 --- a/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp +++ b/src/plugins/debugger/gdb/remoteplaingdbadapter.cpp @@ -112,7 +112,8 @@ void RemotePlainGdbAdapter::handleSetupDone(int qmlPort) if (!startParameters().environment.isEmpty()) m_gdbProc.setEnvironment(startParameters().environment); m_gdbProc.realStart(m_engine->startParameters().debuggerCommand, - QStringList() << QLatin1String("-i") << QLatin1String("mi")); + QStringList() << QLatin1String("-i") << QLatin1String("mi"), + m_engine->startParameters().executable); } void RemotePlainGdbAdapter::handleGdbStarted() diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp index 75683fbd6af..2eb3fc531d8 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodebugsupport.cpp @@ -86,7 +86,8 @@ RunControl *MaemoDebugSupport::createDebugRunControl(MaemoRunConfiguration *runC + environment(runConfig) + QLatin1String(" /usr/bin/gdb"); params.connParams = devConf.server; params.localMountDir = runConfig->localDirToMountForRemoteGdb(); - params.remoteMountPoint = MaemoGlobal::remoteProjectSourcesMountPoint(); + params.remoteMountPoint + = runConfig->remoteProjectSourcesMountPoint(); const QString execDirAbs = QDir::fromNativeSeparators(QFileInfo(runConfig->localExecutableFilePath()).path()); const QString execDirRel diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp index b2f62cbf61c..23f0c391440 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp @@ -705,7 +705,7 @@ void MaemoDeployStep::handleCleanupTimeout() QString MaemoDeployStep::deployMountPoint() const { return MaemoGlobal::homeDirOnDevice(deviceConfig().server.uname) - + QLatin1String("/deployMountPoint"); + + QLatin1String("/deployMountPoint_") + packagingStep()->projectName(); } const MaemoToolChain *MaemoDeployStep::toolChain() const diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp index cbd3ebf5416..5f53a3a2d92 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.cpp @@ -71,10 +71,5 @@ QString MaemoGlobal::remoteEnvironment(const QList &list return env.mid(0, env.size() - 1); } -QString MaemoGlobal::remoteProjectSourcesMountPoint() -{ - return QLatin1String("/tmp/gdbSourcesDir"); -} - } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h index d6ed5f24b85..8ba49dba86e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoglobal.h @@ -55,7 +55,6 @@ public: static QString remoteSudo(); static QString remoteCommandPrefix(const QString &commandFilePath); static QString remoteEnvironment(const QList &list); - static QString remoteProjectSourcesMountPoint(); static QString remoteSourceProfilesCommand(); template static T *buildStep(const ProjectExplorer::DeployConfiguration *dc) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h index bacd7ec4779..8a030e12d00 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h @@ -84,6 +84,8 @@ public: const QString &version); static bool removeDirectory(const QString &dirPath); + QString projectName() const; + static const QLatin1String DefaultVersionNumber; signals: @@ -118,7 +120,6 @@ private: void raiseError(const QString &shortMsg, const QString &detailedMsg = QString()); QString buildDirectory() const; - QString projectName() const; const Qt4BuildConfiguration *qt4BuildConfiguration() const; MaemoDeployStep * deployStep() const; void checkProjectName(); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp index 224749ca1e8..912548322ee 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp @@ -291,6 +291,13 @@ QString MaemoRunConfiguration::localDirToMountForRemoteGdb() const ? projectDir : projectDir.left(lastSeparatorPos); } +QString MaemoRunConfiguration::remoteProjectSourcesMountPoint() const +{ + return MaemoGlobal::homeDirOnDevice(deviceConfig().server.uname) + + QLatin1String("/gdbSourcesDir_") + + QFileInfo(localExecutableFilePath()).fileName(); +} + QString MaemoRunConfiguration::localExecutableFilePath() const { TargetInformation ti = qt4Target()->qt4Project()->rootProjectNode() diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h index 652d5050091..0288b08a82b 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h @@ -104,6 +104,7 @@ public: const QString gdbCmd() const; const QString dumperLib() const; QString localDirToMountForRemoteGdb() const; + QString remoteProjectSourcesMountPoint() const; virtual QVariantMap toMap() const; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp index 5513261e2a6..05405b1b256 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp @@ -202,7 +202,7 @@ void MaemoSshRunner::handleUnmounted() if (m_debugging && m_runConfig->useRemoteGdb()) { m_mounter->addMountSpecification(MaemoMountSpecification( m_runConfig->localDirToMountForRemoteGdb(), - MaemoGlobal::remoteProjectSourcesMountPoint()), false); + m_runConfig->remoteProjectSourcesMountPoint()), false); } setState(PreMountUnmounting); unmount();