forked from qt-creator/qt-creator
Android: Fix the executable permission of the package dir
This fixes the problem where gdb fails to connect to the gdbserver on Android with API > 23 Task-number: QTCREATORBUG-20583 Change-Id: Ia581f8ae5dd6d819ac5ffedf633d1423e9e30074 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
@@ -399,13 +399,16 @@ void AndroidRunnerWorker::asyncStartHelper()
|
|||||||
args << "-n" << m_intentName;
|
args << "-n" << m_intentName;
|
||||||
if (m_useCppDebugger) {
|
if (m_useCppDebugger) {
|
||||||
args << "-D";
|
args << "-D";
|
||||||
QString gdbServerSocket;
|
|
||||||
// run-as <package-name> pwd fails on API 22 so route the pwd through shell.
|
// run-as <package-name> pwd fails on API 22 so route the pwd through shell.
|
||||||
if (!runAdb({"shell", "run-as", m_packageName, "/system/bin/sh", "-c", "pwd"})) {
|
if (!runAdb({"shell", "run-as", m_packageName, "/system/bin/sh", "-c", "pwd"})) {
|
||||||
emit remoteProcessFinished(tr("Failed to get process path. Reason: %1.").arg(m_lastRunAdbError));
|
emit remoteProcessFinished(tr("Failed to get process path. Reason: %1.").arg(m_lastRunAdbError));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gdbServerSocket = QString::fromUtf8(m_lastRunAdbRawOutput.trimmed()) + "/debug-socket";
|
|
||||||
|
QString packageDir = QString::fromUtf8(m_lastRunAdbRawOutput.trimmed());
|
||||||
|
// Add executable flag to package dir. Gdb can't connect to running server on device on
|
||||||
|
// e.g. on Android 8 with NDK 10e
|
||||||
|
runAdb({"shell", "run-as", m_packageName, "chmod", "a+x", packageDir});
|
||||||
|
|
||||||
QString gdbServerExecutable;
|
QString gdbServerExecutable;
|
||||||
if (!runAdb({"shell", "run-as", m_packageName, "ls", "lib/"})) {
|
if (!runAdb({"shell", "run-as", m_packageName, "ls", "lib/"})) {
|
||||||
@@ -425,6 +428,7 @@ void AndroidRunnerWorker::asyncStartHelper()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString gdbServerSocket = packageDir + "/debug-socket";
|
||||||
runAdb({"shell", "run-as", m_packageName, "killall", gdbServerExecutable});
|
runAdb({"shell", "run-as", m_packageName, "killall", gdbServerExecutable});
|
||||||
runAdb({"shell", "run-as", m_packageName, "rm", gdbServerSocket});
|
runAdb({"shell", "run-as", m_packageName, "rm", gdbServerSocket});
|
||||||
std::unique_ptr<QProcess, Deleter> gdbServerProcess(new QProcess, deleter);
|
std::unique_ptr<QProcess, Deleter> gdbServerProcess(new QProcess, deleter);
|
||||||
|
Reference in New Issue
Block a user