現象
- 新手機運行項目正常,但設置斷點後進入 Debug 模式,彈出「Waiting for debugger」對話框消失後**未停在斷點**,直接正常運行。
- 同項目在其他手機正常命中斷點。
- 控制台輸出
java.lang.NullPointerException at DebugUIPlugin.launchInBackground。
根因:手機 ROM 對 ADB/JDWP 實現有缺陷
國產定制 ROM(小米 MIUI、華為 EMUI、OPPO ColorOS、vivo Funtouch 等)常對 **ADB 守護進程、JDWP 協議處理、USB 配置** 做深度修改,導致:
- JDWP 握手超時/失敗,Eclipse 認為調試連接建立失敗。
- 「Waiting for debugger」對話框由系統進程控制,ROM 可能提前關閉或不正確阻塞應用進程。
- Eclipse ADT 插件與新版 Android SDK/平台工具版本不匹配,產生
NullPointerException。
排查與解決步驟
- 開發者選項重置:關閉「USB 調試」→ 關閉「開發者選項」→ 重啟手機 → 重新開啟。
- USB 連接模式:設置為「傳輸文件 (MTP)」或「PTP」,僅充電模式可能禁用 ADB。
- 授權 ADB 密鑰:手機彈出「允許 USB 調試?」務必勾選「總是允許」並點確定。
- 更新平台工具:SDK Manager 更新
Android SDK Platform-Tools 至最新(含 adb.exe 修復)。
- 切換調試端口:
adb forward tcp:8700 jdwp:<pid> 手動建立轉發,再在 Eclipse Debug Configurations → Remote Java Application 連接 localhost:8700。
- 換用 Android Studio:ADT 已停止維護 7 年,**強烈建議遷移至 Android Studio + Gradle**,對新設備/新 SDK 兼容性極佳。
- 最終確認:同一項目、同一電腦、其他手機正常 → **判定為該手機 ROM/硬件問題**,可作為「不支持調試設備」記錄,不再投入精力修復。
總結
單一手機 Waiting for debugger 斷點不生效、Eclipse 拋 NPE,**核心是設備 ROM 對 JDWP/ADB 的非標準實現**。優先嘗試重置開發者選項、更新 Platform-Tools、手動端口轉發;長期建議**遷移至 Android Studio**,並將該設備標記為「不支持源碼級調試」。