<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    John Jiang

    a cup of Java, cheers!
    https://github.com/johnshajiang/blog

       :: 首頁 ::  :: 聯系 :: 聚合  :: 管理 ::
      131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
    詳解Eclipse斷點
    大家肯定都用過Eclipse的調試的功能,在調試的過程中自然也無法避免要使用斷點(breakpoint),但不知是否對Eclipse中各類斷點都有所了解。本篇圖文并茂地介紹了Eclipse中全部類型的斷點,及其設置,希望對大家有所幫助。(2011.11.20)

    1. 示例程序
    BreakpointDemo是一個臆造的應用程序,只是為了便于講解Eclipse中各類斷點的使用罷了。其代碼如下圖所示,

    BreakpointDemo主要包含兩個方法:
    [1]setValue,該方法根據指定的次數(count),對成員變量value進行賦值,值的范圍為0-9的隨機整數。
    [2]printValue,該方法會調用setValue()對value進行賦值,并打印出value的值;但,如果value能被3整除,那么就會拋出IllegalArgumentException異常。

    2. Line Breakpoint
    Line Breakpoin是最簡單的Eclipse斷點,只要雙擊某行代碼對應的左側欄,就對該行設置上斷點。此處,對第20行代碼設置上Line Breakpoint,如下圖所示,

    可以為Line Breakpoint設置一個條件,那么當程序運行到該斷點時,只有滿足設定的條件,才會被中斷。右鍵點擊第20行的斷點,選擇"Breakpoint Properties..."

    在彈出的屬性對話框中,勾選上"Conditional",然后在文本框中輸入"count % 2 == 0"。

    該條件表示,當程序運行到第20行時,只有當count為偶數時,程序才會被中斷。細心地話,你會發現該斷點的圖標發生了改變,多了一個問號。


    3. Watchpoint
    Line Breakpoint關注于程序運行的"過程",大家也常把使用這種斷點的調試稱為單步調試。但有時候,我們對程序的運行過程不太了解,可能也不太關心,不能確定在什么地方設置斷點比較合適,而可能比較關注某個關鍵變量的變化或使用。此時,就可以為該變量設置一種特殊的斷點--Watchpoint。在此示例,我們最關心的就是成員變量value的值,那么就可以為它設置一個Watchpoint,雙擊第9行代碼對應的左側欄就可以了。

    使用在2中所提及的方法,查看該斷點的屬性,

    默認地,當該變量被訪問或它的值被修改時,程序都會被中斷。但在本示例中,只希望當對value的值進行修改時程序才需要被中斷,所以取消對"Access"的勾選。

    這時,我們會發現原來的Watchpoin圖標也有變化了。


    4. Method Breakpoint
    與關注對某個變量的訪問與修改一樣,我們也可以關注程序對某個方法的調用情況,即,可以設置Method Breakpoint。在此處,設置針對方法setValue的Method Breakpoint。同理,雙擊第11行代碼對應的左側欄即可。

    仍然要查看該斷點的屬性。默認地,只勾選了"Entry",而沒有勾選"Exit"。

    這表示,當剛進入該方法(調用開始)時,程序會被中斷;而,離開該方法(調用結束)時,程序并不會被中斷。在本示例中,需要同時勾選上"Exit"。

    點擊OK之后,可以看到該斷點的圖標也有所改變。

    根據這里的設置,當程序運行到第20行后會在第12行被中斷,盡管這里沒有顯式的斷點,但這就是setValue()方法的入口(Entry)。必須注意地是,程序在運行到第16行時不會被中斷,盡管它看起來像是setValue()方法的出口(Exit)。實際上,程序會在第17行被中斷,這里才是setValue()調用結束的地方。

    5. Exception Breakpoint
    如果,我們期望某個特定異常發生時程序能夠被中斷,以方便查看當時程序所處的狀態。通過設置Exception Breakpoint就能達到這一目標。本示例故意在第23行拋出了IllegalArgumentException異常,我們期望程序運行到此處時會被中斷。但我們不直接為此行代碼設置Line Breakpoint,而是為IllegalArgumentException設置Exception Breakpoint。設置Exception Breakpoint的方法與其它類型斷點都不同,它不能通過雙擊左側欄的方式在代碼編輯器上直接進行設置。點擊Breakpoints視圖右上角形如Ji的圖標,

    會彈出如下所示的對話框,

    在其中選中IllegalArgumentException,并點擊OK,這時一個Exception Breakpoint就設置好了。

    當value為3的倍數時,程序會在第23行被中斷,這時我們就能使用調試器來看看value具體是等于0,3或6。

    6. Class Load Breakpoint
    還有一種大家平時可能不太用的斷點--Class Load Breakpoint,即當某個類被加載時,通過該斷點可以中斷程序。


    小結
    上述的Eclipse斷點,我們在現實工作中肯定都有意或無意地使用過其中的幾種,只是不一定十分了解內情罷了。使用好Eclipse的各種斷點,可以把很好地幫助我們分析程序,定位問題。

    posted on 2011-11-20 20:57 John Jiang 閱讀(21133) 評論(13)  編輯  收藏 所屬分類: EclipseJava原創

    評論

    # re: 詳解Eclipse斷點(原) 2011-11-21 13:15 ghy
    老大,不要太猛啊,  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-11-21 20:01 Sha Jiang
    @ghy
    很猛嗎@_@  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-11-22 10:48 星期五
    不錯,學習  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-11-24 09:56 study
    這個敢說原創,前年我就看過了  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-11-24 14:21 Sha Jiang
    @study
    關于Eclipse斷點的文章肯定很多人在很早之前就寫過了...但本文中的每一個文字,每一行代碼,都是我自己寫的,每一張圖片也是我自己親自截取的,沒有抄襲過任何人,所以我敢說本文是我的原創...  回復  更多評論
      

    # re: 詳解Eclipse斷點(原)[未登錄] 2011-11-25 00:17 atom
    講得最清楚的一篇。如果提供代碼下載就更好了。  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-11-25 10:47 Sha Jiang
    @atom
    就那么幾行代碼,隨便敲敲鍵盤就OK ^_^  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-12-15 20:53 leckie
    寫的不錯!非常有用!~  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2011-12-25 10:53 那天的雪
    不錯 很好  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2012-06-09 10:39 KZ
    that's good article.  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2013-02-17 10:23 alice.xu
    @study
    只能說 真理是放置四海皆準的 這個就是這樣做的 就算你原創也會是這樣做 看上去像抄襲的  回復  更多評論
      

    # re: 詳解Eclipse斷點(原) 2013-05-07 22:44 呵呵呵
    啥呀這是  回復  更多評論
      

    # 還有一個類加載異常[未登錄] 2013-09-01 10:26 Justin
    還有一個類加載異常  回復  更多評論
      

    主站蜘蛛池模板: 成人免费无码大片a毛片软件 | 足恋玩丝袜脚视频免费网站| 亚洲精品偷拍视频免费观看| 亚洲AV成人片无码网站| 午夜网站免费版在线观看| 亚洲人成色4444在线观看| 日韩免费高清一级毛片在线| 激情内射亚洲一区二区三区爱妻| 午夜国产精品免费观看| 亚洲精品精华液一区二区| 国产片免费福利片永久| 人成午夜免费大片在线观看| 成人午夜亚洲精品无码网站| 暖暖免费在线中文日本| 亚洲综合一区二区精品久久| 免费精品国偷自产在线在线| 亚洲最大的成人网| 日韩精品成人亚洲专区| 国产日韩久久免费影院 | 成人免费观看男女羞羞视频| 亚洲一区二区三区AV无码| a毛片在线看片免费| 亚洲精品第一国产综合精品| 一本无码人妻在中文字幕免费| 亚洲a∨无码精品色午夜| 国产亚洲精品a在线观看 | 成年人网站免费视频| 亚洲av无码av在线播放| 亚洲国产婷婷香蕉久久久久久| 十八禁视频在线观看免费无码无遮挡骂过 | 国产免费久久精品99久久| 1区1区3区4区产品亚洲| 男女啪啪永久免费观看网站| xxxxx做受大片视频免费| 91在线亚洲精品专区| 成人免费无码精品国产电影| 国产一级高青免费| 亚洲日本国产乱码va在线观看| 国产又大又黑又粗免费视频| 中文字幕日本人妻久久久免费| 亚洲国产日韩在线人成下载|