Gradle系列7--調試Gradle插件

前面幾篇關於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”


  1. 修改名稱(不改默認Unnamed)
  2. Use module classpath這一項如果要調試頂級build.gradle保持默認就可以了,如果是gradle插件工程中的代碼就選插件所在的模塊。
  3. 默認遠程調試的服務器是localhost:5005
  4. 點擊"OK"

選中遠程調試任務如圖



在需要調試的地方打上斷點,然後命令行執行調試任務

./gradlew tasks -Dorg.gradle.debug = true --no-daemon

上面執行tasks任務並打開Gradle的“調試模式”。運行時你會發現Gradle停止在遠程配置調試器連接之前。

 > Starting Daemon

點擊調試按鈕就可以開始連接遠程調試了。

概括

  1. IntelliJ(Android Studio) Edit Configurations點擊+找到Remote點擊創建遠程配置
  2. 填寫信息. Name自定義, 默認遠程調試localhost:5005
  3. Search sources using module's classpath選擇需要調試的插件模塊
  4. 命令行執行任務調試: ./gradlew tasks -Dorg.gradle.debug=true --no-daemon,等待連接調試
  5. 源代碼斷點, 選擇剛創建的調試配置, 點擊 Debug Xxx(Shift+F9)

遠程調試同樣適用於註解處理器(Annotation Processor)

問題

Remote Configuration debugger **can not be attached.

  • 這是因爲端口(默認5005)已經被另一個正在運行的Gradle守護進程佔用了,簡單的停止即可
    ./gradlew --stop
    

參看How to debug Gradle Plugins with IntelliJ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章