iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0

Debug Mode 是 IntelliJ 強大而方便的功能。有時覺得明明沒寫錯卻走歪了,摸不著頭緒,這時只好直接看執行過程的中數值變化。Debugger 讓程式執行過程中可以暫停,檢查變數,以及在在每一行轉變過程,全部清清楚楚。也可以避免臨時想要加一個 println 又忘了拿掉。

IntelliJ 啟用 Quarkus Debug

一般的 Java 應用是在啟動時用蟲蟲按鈕來跑,才會啟動 Debug mode。 Quarkus 這裡有點不太一樣,是按正常執行的那個 Play

https://ithelp.ithome.com.tw/upload/images/20220928/20135701LrZA8mJvGG.png

起來後去 RUN -> Attach to Process.選擇第一個 process.

https://ithelp.ithome.com.tw/upload/images/20220928/20135701PunhYUSmZV.png

https://ithelp.ithome.com.tw/upload/images/20220928/201357012OVLyqfOSm.png

加入中斷點 (Break Poiont)

在想暫停的行數點兩點。會出現紅紅一點,在 Debug mode 時,執行到這裡會暫停。再點兩次就會取效。

昨天的質數運算為例,我們在行 27 設了一個 Break Point
https://ithelp.ithome.com.tw/upload/images/20220928/20135701PYPv2eh28u.png

執行到中斷點

啟動 -> Attach to Process 後,瀏覽器打開 : http://localhost:8080/prime/359 就會發現沒有回應。再回去 IntelliJ 看。就會看下面變成了 Debug 視窗,並且會列出目前scope 中的所有變數。

https://ithelp.ithome.com.tw/upload/images/20220928/20135701mhLoI2aVaz.png

Debug 按鈕說明

利用按鈕可進行步進的操作
https://ithelp.ithome.com.tw/upload/images/20220928/20135701VkU52oBMXt.png

  1. Show Execution Point : 跳轉到當前 Debug 執行的那一行
  2. Step Over : 一行一行的往下執行
  3. Step Into : 往下或裡面執行,如果有 call 其他 method,則會 detail 跳入
  4. Force Step Into : 強制進入方法內部,能進入任何方法
  5. Step Out : 跳出 function , 執行到 function 最後一行
  6. Run to Cursor : 執行到目前游標的位置而不用設中斷點
  7. Evaluate Expression : 輸入客製化的表達式作運算

在中斷點利用 Step Over 一步步往下,也會看到在各個 step 變數的記錄

https://ithelp.ithome.com.tw/upload/images/20220928/201357013qbCTYESX9.png

Break Point 按鈕組

直行還有一組按鈕,常用到的有三個,通常會用 Resume Program 表示這回合該看都看完了,可以往下跑完或是到下一個中斷點。

https://ithelp.ithome.com.tw/upload/images/20220928/20135701h2rVEahSvB.png

  1. Resume Program : 繼續執行到下一個 break point 或跑完
  2. View Breakpoints : 一次查看所有的 break point
  3. Mute Breakpoints : 一次開關所有的 break point

心得

其實如果是 pure function 應該可以很明白輸入什麼就可以輸出什麼,用到 debug mode 可能就是不夠 pure。不過人在江湖走還是得處理一些歷史共業或是自已以前的坑, Dubug mode 學起來也是多一門武器


上一篇
Quarkus 的可觀測性 Metrics , Prometheus-Ready
下一篇
使用 OIDC 達到 Quarkus 應用的 SSO (Single Sign-On)
系列文
Quarkus, Kotlin, Reactive 雲原生服務開發32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言