forked from qt-creator/qt-creator
remotelinux: use /proc/*/exe link target to determine local binary
Change-Id: I08a3ab02214e41af646f01e7de705009fa07ecac Reviewed-by: Christian Kandeler <christian.kandeler@nokia.com>
This commit is contained in:
@@ -1114,8 +1114,10 @@ public slots:
|
|||||||
// FIXME: Remove.
|
// FIXME: Remove.
|
||||||
void maybeEnrichParameters(DebuggerStartParameters *sp);
|
void maybeEnrichParameters(DebuggerStartParameters *sp);
|
||||||
|
|
||||||
void gdbServerStarted(const QString &channel, const QString &sysroot, const QString &localExecutable);
|
void gdbServerStarted(const QString &channel, const QString &sysroot,
|
||||||
void attachedToProcess(const QString &channel, const QString &sysroot, const QString &localExecutable);
|
const QString &remoteCommandLine, const QString &remoteExecutable);
|
||||||
|
void attachedToProcess(const QString &channel, const QString &sysroot,
|
||||||
|
const QString &remoteCommandLine, const QString &remoteExecutable);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DebuggerMainWindow *m_mainWindow;
|
DebuggerMainWindow *m_mainWindow;
|
||||||
@@ -1690,9 +1692,12 @@ void DebuggerPluginPrivate::startRemoteServer()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerPluginPrivate::gdbServerStarted(const QString &channel,
|
void DebuggerPluginPrivate::gdbServerStarted(const QString &channel,
|
||||||
const QString &sysroot, const QString &remoteCommandLine)
|
const QString &sysroot,
|
||||||
|
const QString &remoteCommandLine,
|
||||||
|
const QString &remoteExecutable)
|
||||||
{
|
{
|
||||||
Q_UNUSED(remoteCommandLine);
|
Q_UNUSED(remoteCommandLine);
|
||||||
|
Q_UNUSED(remoteExecutable);
|
||||||
Q_UNUSED(sysroot);
|
Q_UNUSED(sysroot);
|
||||||
showStatusMessage(tr("gdbserver is now listening at %1").arg(channel));
|
showStatusMessage(tr("gdbserver is now listening at %1").arg(channel));
|
||||||
}
|
}
|
||||||
@@ -1708,13 +1713,21 @@ void DebuggerPluginPrivate::attachToRemoteProcess()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerPluginPrivate::attachedToProcess(const QString &channel,
|
void DebuggerPluginPrivate::attachedToProcess(const QString &channel,
|
||||||
const QString &sysroot, const QString &remoteCommandLine)
|
const QString &sysroot,
|
||||||
|
const QString &remoteCommandLine,
|
||||||
|
const QString &remoteExecutable)
|
||||||
{
|
{
|
||||||
QString binary = remoteCommandLine.section(QLatin1Char(' '), 0, 0);
|
QString binary;
|
||||||
QString localExecutable;
|
QString localExecutable;
|
||||||
QString candidate = sysroot + QLatin1Char('/') + binary;
|
QString candidate = sysroot + remoteExecutable;
|
||||||
if (QFileInfo(candidate).exists())
|
if (QFileInfo(candidate).exists())
|
||||||
localExecutable = candidate;
|
localExecutable = candidate;
|
||||||
|
if (localExecutable.isEmpty()) {
|
||||||
|
binary = remoteCommandLine.section(QLatin1Char(' '), 0, 0);
|
||||||
|
candidate = sysroot + QLatin1Char('/') + binary;
|
||||||
|
if (QFileInfo(candidate).exists())
|
||||||
|
localExecutable = candidate;
|
||||||
|
}
|
||||||
if (localExecutable.isEmpty()) {
|
if (localExecutable.isEmpty()) {
|
||||||
candidate = sysroot + QLatin1String("/usr/bin/") + binary;
|
candidate = sysroot + QLatin1String("/usr/bin/") + binary;
|
||||||
if (QFileInfo(candidate).exists())
|
if (QFileInfo(candidate).exists())
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ public:
|
|||||||
SshRemoteProcessRunner runner;
|
SshRemoteProcessRunner runner;
|
||||||
QSettings *settings;
|
QSettings *settings;
|
||||||
QString remoteCommandLine;
|
QString remoteCommandLine;
|
||||||
|
QString remoteExecutable;
|
||||||
};
|
};
|
||||||
|
|
||||||
StartGdbServerDialogPrivate::StartGdbServerDialogPrivate(StartGdbServerDialog *q)
|
StartGdbServerDialogPrivate::StartGdbServerDialogPrivate(StartGdbServerDialog *q)
|
||||||
@@ -273,6 +274,7 @@ void StartGdbServerDialog::attachToProcess()
|
|||||||
QTC_ASSERT(row >= 0, return);
|
QTC_ASSERT(row >= 0, return);
|
||||||
RemoteProcess process = d->processList->at(row);
|
RemoteProcess process = d->processList->at(row);
|
||||||
d->remoteCommandLine = process.cmdLine;
|
d->remoteCommandLine = process.cmdLine;
|
||||||
|
d->remoteExecutable = process.exe;
|
||||||
if (port == -1) {
|
if (port == -1) {
|
||||||
reportFailure();
|
reportFailure();
|
||||||
return;
|
return;
|
||||||
@@ -378,7 +380,8 @@ void StartGdbServerDialog::reportOpenPort(int port)
|
|||||||
QMetaObject::invokeMethod(ob, member, Qt::QueuedConnection,
|
QMetaObject::invokeMethod(ob, member, Qt::QueuedConnection,
|
||||||
Q_ARG(QString, channel),
|
Q_ARG(QString, channel),
|
||||||
Q_ARG(QString, d->sysrootPathChooser->path()),
|
Q_ARG(QString, d->sysrootPathChooser->path()),
|
||||||
Q_ARG(QString, d->remoteCommandLine));
|
Q_ARG(QString, d->remoteCommandLine),
|
||||||
|
Q_ARG(QString, d->remoteExecutable));
|
||||||
}
|
}
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user