Android: Simplify gdbserver upload logic a bit

Change-Id: I3b1950633ef99f1ead01edc864add8bb7f8a2031
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2020-05-18 08:46:17 +02:00
parent b7382bcf2e
commit d54c61b4bd

View File

@@ -517,30 +517,24 @@ void AndroidRunnerWorker::asyncStartHelper()
uploadDebugServer(debugServerFile); uploadDebugServer(debugServerFile);
} else { } else {
QString debugServerExecutable = "gdbserver"; if (packageFileExists("./lib/gdbserver")) {
QString debugServerPrefix = "./lib/"; debugServerFile = "./lib/gdbserver";
auto findGdbServer = [this, &debugServerExecutable, debugServerPrefix](const QString& gdbEx) { qCDebug(androidRunWorkerLog) << "Found GDB server " + debugServerFile;
if (!packageFileExists(debugServerPrefix + gdbEx)) runAdb({"shell", "run-as", m_packageName, "killall", "gdbserver"});
return false; } else if (packageFileExists("./lib/libgdbserver.so")) {
debugServerExecutable = gdbEx; debugServerFile = "./lib/libgdbserver.so";
return true; qCDebug(androidRunWorkerLog) << "Found GDB server " + debugServerFile;
}; runAdb({"shell", "run-as", m_packageName, "killall", "libgdbserver.so"});
} else {
if (!findGdbServer("gdbserver") && !findGdbServer("libgdbserver.so")) {
// Armv8. symlink lib is not available. // Armv8. symlink lib is not available.
debugServerFile = "./gdbserver";
// Kill the previous instances of gdbserver. Do this before copying the gdbserver. // Kill the previous instances of gdbserver. Do this before copying the gdbserver.
runAdb({"shell", "run-as", m_packageName, "killall", debugServerExecutable}); runAdb({"shell", "run-as", m_packageName, "killall", "gdbserver"});
if (!m_debugServerPath.isEmpty() && uploadDebugServer("./gdbserver")) { if (m_debugServerPath.isEmpty() || !uploadDebugServer("./gdbserver")) {
debugServerPrefix = "./";
} else {
emit remoteProcessFinished(tr("Cannot find or copy C++ debug server.")); emit remoteProcessFinished(tr("Cannot find or copy C++ debug server."));
return; return;
} }
} else {
qCDebug(androidRunWorkerLog) << "Found GDB server under ./lib";
runAdb({"shell", "run-as", m_packageName, "killall", debugServerExecutable});
} }
debugServerFile = debugServerPrefix + debugServerExecutable;
} }
QString debuggerServerErr; QString debuggerServerErr;
if (!startDebuggerServer(packageDir, debugServerFile, &debuggerServerErr)) { if (!startDebuggerServer(packageDir, debugServerFile, &debuggerServerErr)) {