close

好久沒在這裡寫技術文件了,因為前陣子比較少有機會帶新人,於是就沒什麼想寫的了。

最新又在公司遇到需要帶的小雞,所以又遇到覺得可以補充的部份,就播個時間來寫一寫。

這次要講的是IDE的Debug模式

基本上IDE裡的Debug模式會有幾個區塊:

  1.  中斷點 (Breakpoints)
  2.  監看式 (Watch)
  3.  作用域 (Variales)
  4.  呼叫堆疊 (Call Stack)

如果讀者懂得只有中斷點的話?那還真的需要看一下這篇。

 

下方說明的範例都是用Chrome瀏灠器本身能夠寫程式的地方來示範的,不過每個IDE找一下,都一定會有類示的區域。

中斷點 (Breakpoints)

首先是中斷點的部份(Breakpoints)的部份,在Debug中是最基本的,就是在程式的行數那邊按一下。

image

這樣在執行時,程式就會中斷在那個地方,等待使用者的下一步。

此時使用者都會看到類似這樣的按鈕:

image

因為每個IDE都不同,但基本上都會有我標記號碼的那四個,所以我們針對這四個來說明:

  1. 直接執行,直到下一個中斷點
  2. 跳到中斷點的下一行,以上述的範列來說,如果停在第11行,執行這個會停在第12行。
  3. 跳到這一行裡預計要執行的Method,以上述的範列來說,如果停在第11行,執行這個會停在第16行。
  4. 跳出這個Method的區塊,以上述的範列來說,如果停在第16行,執行這個會停在第12行。

大概是這樣,相信讀者們多看幾次就懂了。

另外,有關中斷點的視窗,還有幾個小功能

image

這二個選項,是當不確定問題到底出來那裡時會用到的

  • 在遇到未偵測到的例外狀況時暫停 => 中文翻譯就是說,沒有用try-catch包起來的Exception,出時時中斷一下。
  • 在遇到例外狀況時暫停 => 中文翻釋,不管有沒有try-catch,只要是例外,出現時都幫我中斷。

 

監看式 (Watch)

這個部份是用來執行簡單的程式並查看結果用的。

image

從圖可以看出,我在監看式裡做了:

  1. 查看變數a
  2. 執行變數a+1
  3. 執行方法 syncMethod(a)

這樣大家應該可以大概瞭解監看式能做到的事情吧,它能依據當前的記憶體數值,並依據監看式裡的程式來執行並輸出結果,

這裡可以注意一下,即使Method(Function)是void(不回傳)的也沒有關係,它還是會執行程式;筆者曾經透過這種方式,將記憶體的EXCEL檔案輸出,來確認當前的程式是否有問題。

作用域 (Variales)

這裡也是一個很神奇的區塊,大家可能會認為這個跟Watch有什麼不同,不就把變數條式出來嗎?

最大的不同—Watch是唯讀的,而Variable是可以寫入的,如下圖:

image

我們可以利用Variables的功能,修改變數a的值,而這個值,會從下一行開始修改,所以要注意一下中斷點喔。

呼叫堆疊 (Call Stack)

這個區塊主要是將我們目前中斷的程式,到底經過了那些程式的呼叫,都會記錄在這裡,並且能保留當時堆疊的變數資料,下方來看二張圖就知道了。

image

當我們程式執行到第10行時,我們可以看到Watch裡的變數是讀不到的,於是我們切換一下呼叫堆疊。

image

把呼叫堆疊切到第二行,左邊的中斷點會回到第5行,此時變數會成當時的狀況,所以Watch又可以讀到東西。

上述的這四樣,都是IDE裡的標配,也是我很依賴Debug模式的原因,瞭解我們工具的強大,就會提效我們的工作效率。

arrow
arrow

    JAVA Programmer 發表在 痞客邦 留言(0) 人氣()