核心原因:Android Studio 默认的
Auto模式会同时拉起 C/C++ 调试器(LLDB)。在 Android 15 (SDK 35) 或定制系统(如文石 Onyx、小米等)上,LLDB 会因ptrace权限拦截或超时退出,导致 ART 虚拟机的JDWP通道被连带强制关闭。
⚡ 极速解决方案
1. 纯 Java / Kotlin 项目(推荐)
- 路径:
Run➡️Edit Configurations...➡️Debugger标签页。 - 修改:将
Debug type从Auto改为Java Only。 - 效果:完全绕过 LLDB,断连率降为 0%,且大幅提升调试启动速度。
2. 含有 C/C++ (NDK/JNI) 的项目(需调试 C++)
- 推荐做法(先 Run 后 Attach):
1. 将Debug type设置为Dual。
2. 点击绿色Run ▶️图标,正常启动 App。
3. App 界面亮起后,点击顶部工具栏Attach Debugger to Android Process(手机红虫图标)附加调试。 - 备选:仅调试 C++ 逻辑时,可将
Debug type选为Native Only。
🛠️ 辅助排查与防护
| 故障场景 | 解决办法 |
|---|---|
| 文石/小米等系统后台冻结 | 长按 App 图标 ➡️ 应用优化 ➡️ 关闭“自动冻结”,允许后台运行 |
| Clash / VPN 代理拦截 | 在 AS Settings ➡️ HTTP Proxy 填写例外:localhost, 127.0.0.1 |
🔍 命令行快速诊断(定位根源)
# 转发 JDWP 端口并发送握手包测试
adb forward tcp:8700 jdwp:<App_PID>
python3 -c "import socket; s=socket.create_connection(('127.0.0.1', 8700)); s.sendall(b'JDWP-Handshake'); print(s.recv(14))"
- 回包
b'JDWP-Handshake'➡️ 手机端正常,问题在 AS / LLDB 冲突或代理拦截。 - 报错 / 断开 ➡️ 手机系统冻结了进程,或构建包非 Debuggable。
发表回复