問題現象
Android Studio 調試時,斷點命中後跳轉到的源碼行數與實際執行代碼不一致,導致無法正常查看變量值、單步執行。
常見原因與解決方案
1. 代碼與編譯產物不同步(最常見)
解決:執行 Build > Clean Project 後重新 Rebuild Project,確保編譯產物與源碼一致。
2. 依賴庫缺少源碼或源碼版本不匹配
- 第三方庫未附帶 Sources JAR,或版本與編譯時不同
- 解決:在 Project Structure > Dependencies 中檢查庫依賴,下載對應版本 Sources,或暫時禁用該庫的調試
3. 代碼混淆/優化導致行號偏移
- Release 構建啟用了
minifyEnabled true 或 debuggable false
- 解決:調試時確保使用 Debug 構建類型,
buildTypes { debug { minifyEnabled false; debuggable true } }
4. Instant Run / Apply Changes 導致增量編譯異常
- 舊版 AS 的 Instant Run 可能產生不一致
- 解決:關閉 Instant Run(Settings > Build > Instant Run),或升級到新版 AS 使用 Apply Changes
5. 多模塊項目源碼路徑映射錯誤
- Module 依賴關係複雜,源碼根目錄識別錯誤
- 解決:檢查
settings.gradle 和各模塊 build.gradle,確保源碼集配置正確
快速排查清單
- Clean + Rebuild Project
- 確認調試的是 Debug 版本(非 Release)
- 關閉 Instant Run / Apply Changes 重試
- 檢查斷點圖標是否為實心紅點(空心表示未解析/無效)
- 嘗試
File > Invalidate Caches / Restart
總結
90% 以上情況由 代碼與編譯產物不同步 或 構建類型配置錯誤 引發。養成「調試前 Clean Rebuild」的習慣可避免大部分此類問題。