前面幾篇關於Gradle插件的開發。在開發過程中,遇到問題就需要找出問題出在哪裏。這個問題是自定義插件中還是其他地方?通常報錯會給提示:
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
然後添加--info
或--debug
選項或許可以解決。有時我們需要深入源代碼找出問題發生時的情況,又或者想要跟蹤代碼的執行過程以瞭解原理等等。這種方式仍然稱爲“斷點調試”。
工具
IntelliJ IDEA、Android Studio或者類似環境
斷點調試
點擊Edit Configurations
點開左邊的“+”號,點擊“Remote”
- 修改名稱(不改默認Unnamed)
-
Use module classpath
這一項如果要調試頂級build.gradle保持默認就可以了,如果是gradle插件工程中的代碼就選插件所在的模塊。 - 默認遠程調試的服務器是
localhost:5005
- 點擊"OK"
選中遠程調試任務如圖
在需要調試的地方打上斷點,然後命令行執行調試任務
./gradlew tasks -Dorg.gradle.debug = true --no-daemon
上面執行tasks
任務並打開Gradle的“調試模式”。運行時你會發現Gradle停止在遠程配置調試器連接之前。
> Starting Daemon
點擊調試按鈕就可以開始連接遠程調試了。
概括
- IntelliJ(Android Studio)
Edit Configurations
點擊+
找到Remote
點擊創建遠程配置 - 填寫信息. Name自定義, 默認遠程調試
localhost:5005
-
Search sources using module's classpath
選擇需要調試的插件模塊 - 命令行執行任務調試:
./gradlew tasks -Dorg.gradle.debug=true --no-daemon
,等待連接調試 - 源代碼斷點, 選擇剛創建的調試配置, 點擊
Debug Xxx(Shift+F9)
遠程調試同樣適用於註解處理器(Annotation Processor)
問題
Remote Configuration debugger **can not be attached.
- 這是因爲端口(默認5005)已經被另一個正在運行的Gradle守護進程佔用了,簡單的停止即可
./gradlew --stop