Android Studio 调试报错 Connection shut down by remote side 排查指南

核心原因:Android Studio 默认的 Auto 模式会同时拉起 C/C++ 调试器(LLDB)。在 Android 15 (SDK 35) 或定制系统(如文石 Onyx、小米等)上,LLDB 会因 ptrace 权限拦截或超时退出,导致 ART 虚拟机的 JDWP 通道被连带强制关闭。


⚡ 极速解决方案

1. 纯 Java / Kotlin 项目(推荐)

  • 路径Run ➡️ Edit Configurations... ➡️ Debugger 标签页。
  • 修改:将 Debug typeAuto 改为 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。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注