升级Android Studio至3.1.2后无法调试C++代码求助
我把Android Studio升级到3.1.2版本后,调试应用时遇到了棘手的问题——每次尝试启动调试,模拟器/设备上会弹出提示(图片如下),同时错误日志里抛出了Execution finished com.intellij.execution.ExecutionException相关异常,最后进程直接以exit code 0结束,完全没法正常进入调试流程。
错误日志详情:
Execution finished com.intellij.execution.ExecutionException: Execution finished at com.jetbrains.cidr.execution.ExecutionResult.get(ExecutionResult.java:38) at com.jetbrains.cidr.execution.debugger.backend.lldb.LLDBDriver.getProtobufClient(LLDBDriver.java:90) at com.jetbrains.cidr.execution.debugger.backend.lldb.LLDBDriver.executeConsoleCommand(LLDBDriver.java:1109) at com.jetbrains.cidr.execution.debugger.backend.lldb.LLDBDriver.executeConsoleCommand(LLDBDriver.java:1103) at com.android.tools.ndk.run.lldb.AndroidLLDBDriver.loadStartupScripts(AndroidLLDBDriver.java:321) at com.android.tools.ndk.run.lldb.AndroidLLDBDriver.commonLoad(AndroidLLDBDriver.java:132) at com.android.tools.ndk.run.lldb.AndroidLLDBDriver.loadForAttach(AndroidLLDBDriver.java:248) at com.android.tools.ndk.run.AndroidNativeAppDebugProcess.prepareTarget(AndroidNativeAppDebugProcess.java:101) at com.android.tools.ndk.run.AndroidNativeDebugProcessImpl.doLoadTarget(AndroidNativeDebugProcessImpl.java:123) at com.jetbrains.cidr.execution.debugger.CidrDebugProcess.lambda$start$0(CidrDebugProcess.java:314) at com.jetbrains.cidr.execution.debugger.CidrDebugProcess$MyCommandProcessor.consume(CidrDebugProcess.java:703) at com.jetbrains.cidr.execution.debugger.CidrDebugProcess$MyCommandProcessor.consume(CidrDebugProcess.java:693) at com.intellij.util.concurrency.QueueProcessor.lambda$null$0(QueueProcessor.java:93) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:246) at com.intellij.util.concurrency.QueueProcessor.lambda$wrappingProcessor$1(QueueProcessor.java:93) at com.intellij.util.concurrency.QueueProcessor.lambda$null$3(QueueProcessor.java:226) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:246) at com.intellij.util.concurrency.QueueProcessor.lambda$startProcessing$4(QueueProcessor.java:226) at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:315) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: com.intellij.execution.ExecutionFinishedException: Execution finished at com.jetbrains.cidr.execution.debugger.backend.lldb.LLDBDriver$4.processTerminated(LLDBDriver.java:248) at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.execution.process.ProcessHandler$5.invoke(ProcessHandler.java:239) at com.sun.proxy.$Proxy16.processTerminated(Unknown Source) at com.intellij.execution.process.ProcessHandler$4.run(ProcessHandler.java:196) at com.intellij.execution.process.ProcessHandler$TasksRunner.execute(ProcessHandler.java:272) at com.intellij.execution.process.ProcessHandler.notifyTerminated(ProcessHandler.java:177) at com.intellij.execution.process.ProcessHandler.notifyProcessTerminated(ProcessHandler.java:173) at com.intellij.execution.process.BaseOSProcessHandler.onOSProcessTerminated(BaseOSProcessHandler.java:192) at com.intellij.execution.process.OSProcessHandler.onOSProcessTerminated(OSProcessHandler.java:89) at com.intellij.execution.process.BaseOSProcessHandler$2$1.consume(BaseOSProcessHandler.java:155) at com.intellij.execution.process.BaseOSProcessHandler$2$1.consume(BaseOSProcessHandler.java:140) at com.intellij.execution.process.ProcessWaitFor$1.run(ProcessWaitFor.java:66) ... 5 more
有没有朋友能帮忙解决这个调试问题?
解决方案
我之前碰到过几乎一模一样的问题,试了几个方法后解决了,你可以逐一尝试:
清理缓存并重启Android Studio
点击菜单栏的File→Invalidate Caches / Restart,选择Invalidate and Restart选项。升级后缓存不一致是常见问题,清理后重启往往能解决很多奇怪的bug。检查NDK版本兼容性
Android Studio 3.1.2对NDK版本有特定要求,建议打开File→Project Structure→SDK Location查看当前NDK版本。如果是较旧的版本,尝试更新到r17c(这个版本和AS 3.1.x系列适配性很好);如果已经是对应版本,删除本地.ndk文件夹后重新下载完整NDK包。重新配置调试器设置
打开Run/Debug Configurations,找到你的调试配置,切换到Debugger标签页,把Debug type设置为Auto或者明确选择Native(如果你的应用包含Native代码),保存配置后再尝试调试。重置设备/模拟器的调试状态
确保真机开启了USB调试模式,模拟器使用的是最新的系统镜像。可以尝试重启设备/模拟器,然后重新连接到Android Studio,再启动调试。替换LLDB版本
有时候AS自带的LLDB版本会有兼容性问题,你可以手动替换成稳定版本:- 找到AS安装目录下的
lldb/3.1文件夹 - 下载对应版本的稳定LLDB包(比如3.1.1版本)
- 替换原文件夹内容后重启AS
- 找到AS安装目录下的
如果以上方法都无效,建议创建一个全新的测试项目,看看能不能正常调试——以此判断是项目本身的配置问题,还是Android Studio的全局设置问题。
内容的提问来源于stack exchange,提问作者VISHNU NEELANCHERI

