From 9b5fe259c370230965c4a90094bf0802503e2326 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 9 Aug 2024 14:34:12 +0200 Subject: [PATCH] Android: Avoid code duplication in startDebuggerServer() Change-Id: I5ea1c620bf5ef83615d5649fc80fe6863e7a7755 Reviewed-by: Alessandro Portale --- src/plugins/android/androidrunnerworker.cpp | 56 ++++++++------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 9132c3aeeb3..16336a86320 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -504,49 +504,37 @@ void AndroidRunnerWorker::startNativeDebugging() void AndroidRunnerWorker::startDebuggerServer(const QString &packageDir, const QString &debugServerFile) { + const QString gdbServerSocket = packageDir + "/debug-socket"; + QStringList adbArgs = {"shell", "run-as", m_packageName}; if (m_processUser > 0) adbArgs << "--user" << QString::number(m_processUser); - if (m_useLldb) { - QString lldbServerErr; - QStringList lldbServerArgs = selector(); - lldbServerArgs += adbArgs; - lldbServerArgs << debugServerFile - << "platform" - // << "--server" // Can lead to zombie servers - << "--listen" << QString("*:%1").arg(s_localDebugServerPort.toString()); - m_debugServerProcess.reset(AndroidManager::startAdbProcess(lldbServerArgs, &lldbServerErr)); - if (!m_debugServerProcess) { - qCDebug(androidRunWorkerLog) << "Debugger process failed to start" << lldbServerErr; - emit remoteProcessFinished(Tr::tr("Failed to start debugger server.")); - return; - } - qCDebug(androidRunWorkerLog) << "Debugger process started"; - m_debugServerProcess->setObjectName("AndroidDebugServerProcess"); - - } else { - QString gdbServerSocket = packageDir + "/debug-socket"; + if (!m_useLldb) runAdb(adbArgs + QStringList({"rm", gdbServerSocket})); - QString gdbProcessErr; - QStringList gdbServerErr = selector(); - gdbServerErr += adbArgs; - gdbServerErr << debugServerFile - << "--multi" << "+" + gdbServerSocket; - m_debugServerProcess.reset(AndroidManager::startAdbProcess(gdbServerErr, &gdbProcessErr)); + QStringList serverArgs = selector() + adbArgs + QStringList{debugServerFile}; - if (!m_debugServerProcess) { - qCDebug(androidRunWorkerLog) << "Debugger process failed to start" << gdbServerErr; - emit remoteProcessFinished(Tr::tr("Failed to start debugger server.")); - return; - } - qCDebug(androidRunWorkerLog) << "Debugger process started"; - m_debugServerProcess->setObjectName("AndroidDebugServerProcess"); + if (m_useLldb) + serverArgs += QStringList{"platform", "--listen", "*:" + s_localDebugServerPort.toString()}; + else + serverArgs += QStringList{"--multi", "+" + gdbServerSocket}; - removeForwardPort("tcp:" + s_localDebugServerPort.toString(), - "localfilesystem:" + gdbServerSocket, "C++"); + QString serverError; + m_debugServerProcess.reset(AndroidManager::startAdbProcess(serverArgs, &serverError)); + if (!m_debugServerProcess) { + qCDebug(androidRunWorkerLog) << "Debugger process failed to start" << serverError; + emit remoteProcessFinished(Tr::tr("Failed to start debugger server.")); + return; } + qCDebug(androidRunWorkerLog) << "Debugger process started"; + m_debugServerProcess->setObjectName("AndroidDebugServerProcess"); + + if (m_useLldb) + return; + + removeForwardPort("tcp:" + s_localDebugServerPort.toString(), + "localfilesystem:" + gdbServerSocket, "C++"); } ExecutableItem AndroidRunnerWorker::removeForwardPortRecipe(