好久沒在這裡寫技術文件了,因為前陣子比較少有機會帶新人,於是就沒什麼想寫的了。
最新又在公司遇到需要帶的小雞,所以又遇到覺得可以補充的部份,就播個時間來寫一寫。
這次要講的是IDE的Debug模式
基本上IDE裡的Debug模式會有幾個區塊:
- 中斷點 (Breakpoints)
- 監看式 (Watch)
- 作用域 (Variales)
- 呼叫堆疊 (Call Stack)
如果讀者懂得只有中斷點的話?那還真的需要看一下這篇。
下方說明的範例都是用Chrome瀏灠器本身能夠寫程式的地方來示範的,不過每個IDE找一下,都一定會有類示的區域。
中斷點 (Breakpoints)
首先是中斷點的部份(Breakpoints)的部份,在Debug中是最基本的,就是在程式的行數那邊按一下。
這樣在執行時,程式就會中斷在那個地方,等待使用者的下一步。
此時使用者都會看到類似這樣的按鈕:
因為每個IDE都不同,但基本上都會有我標記號碼的那四個,所以我們針對這四個來說明:
- 直接執行,直到下一個中斷點
- 跳到中斷點的下一行,以上述的範列來說,如果停在第11行,執行這個會停在第12行。
- 跳到這一行裡預計要執行的Method,以上述的範列來說,如果停在第11行,執行這個會停在第16行。
- 跳出這個Method的區塊,以上述的範列來說,如果停在第16行,執行這個會停在第12行。
大概是這樣,相信讀者們多看幾次就懂了。
另外,有關中斷點的視窗,還有幾個小功能
這二個選項,是當不確定問題到底出來那裡時會用到的
- 在遇到未偵測到的例外狀況時暫停 => 中文翻譯就是說,沒有用try-catch包起來的Exception,出時時中斷一下。
- 在遇到例外狀況時暫停 => 中文翻釋,不管有沒有try-catch,只要是例外,出現時都幫我中斷。
監看式 (Watch)
這個部份是用來執行簡單的程式並查看結果用的。
從圖可以看出,我在監看式裡做了:
- 查看變數a
- 執行變數a+1
- 執行方法 syncMethod(a)
這樣大家應該可以大概瞭解監看式能做到的事情吧,它能依據當前的記憶體數值,並依據監看式裡的程式來執行並輸出結果,
這裡可以注意一下,即使Method(Function)是void(不回傳)的也沒有關係,它還是會執行程式;筆者曾經透過這種方式,將記憶體的EXCEL檔案輸出,來確認當前的程式是否有問題。
作用域 (Variales)
這裡也是一個很神奇的區塊,大家可能會認為這個跟Watch有什麼不同,不就把變數條式出來嗎?
最大的不同—Watch是唯讀的,而Variable是可以寫入的,如下圖:
我們可以利用Variables的功能,修改變數a的值,而這個值,會從下一行開始修改,所以要注意一下中斷點喔。
呼叫堆疊 (Call Stack)
這個區塊主要是將我們目前中斷的程式,到底經過了那些程式的呼叫,都會記錄在這裡,並且能保留當時堆疊的變數資料,下方來看二張圖就知道了。
當我們程式執行到第10行時,我們可以看到Watch裡的變數是讀不到的,於是我們切換一下呼叫堆疊。
把呼叫堆疊切到第二行,左邊的中斷點會回到第5行,此時變數會成當時的狀況,所以Watch又可以讀到東西。
上述的這四樣,都是IDE裡的標配,也是我很依賴Debug模式的原因,瞭解我們工具的強大,就會提效我們的工作效率。