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

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

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

    BaNg@taobao

    Just Do It!

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      20 Posts :: -1 Stories :: 202 Comments :: 0 Trackbacks
    調(diào)試其實是門很深的學問,在分析Eclipse源代碼的過程中積累了很多經(jīng)驗,但大多與多數(shù)人無用,現(xiàn)介紹一個簡單而非常有用的調(diào)試功能及它的適用場合。

    首先看一段代碼:

     1 
     2 public class Simple {
     3     public static void main(String[] args) {
     4         int max = 10;
     5         for(int i = 0; i < max ; i++)
     6         {
     7             simpleAction(i);
     8         }
     9     }
    10     
    11     private static void simpleAction(int i) {
    12         int tmp = i;
    13         if (i == 5)
    14             throw new NullPointerException("5 is invalid number!");
    15         System.out.println("Number "+tmp+" reached!");
    16     }
    17 }
    18
    這段代碼非常簡單,就是打印10個數(shù)字,但中間一個出了異常,假設我們忘記Eclipse的Exception BreakPoint(在復雜的場合,不一定拋Exception),于是看到控制臺除了異常信息之后,我們可在第7行和第12行設置斷點,看調(diào)用i到底發(fā)生了什么。

    啟動調(diào)試后一切正常,除了你必須F8 4次,因為0-4正常,但也在斷點處,很煩人。有沒有可能激活斷點一次呢?當然可以。

    從控制臺看到5 is invalid number,那么這次調(diào)試只針對5,我們可以簡單的設置一下:

    第一步:



    第二步在出現(xiàn)的對話框內(nèi),選中Enable Condition,接著輸入我們的condition: i==5



    OK,再調(diào)試啟動Simple,發(fā)現(xiàn)斷點激活是在i=5的時候,我們就可以F6一步一步看到底發(fā)生了什么。

    這種條件調(diào)試在使用復雜的框架的時候極其有用,舉個例子:
    GMF的AbstractActionHandler有N多子類,你必須直接或間接的繼承它,同時使用它的API,在它的API很復雜而我還在探索
    的情況下,出錯在所難免,出錯后在AbstractActionHandler的某個API里設置了一斷點,但你只想關心自己寫的子類,否則按F8超過1分鐘,那么我們可以在上面的condition text里面輸入:

    this.getClass().getName().equals("foo.bar.MyDiagramAction")

    就可以省掉很多麻煩。

    當然condition可以寫的很復雜,可以針對斷點的context寫任意Java代碼。



    posted on 2008-07-22 23:10 Always BaNg. 閱讀(1948) 評論(12)  編輯  收藏 所屬分類: JavaEclipse

    Feedback

    # re: 或許你不知道的一個調(diào)試功能 2008-07-22 23:39 隔葉黃鶯
    呵呵,我經(jīng)常用這個功能的。  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-22 23:40 隔葉黃鶯
    為什么你的日志在 blogjava.net 首頁面會顯示

    Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->&nb...

    呢?  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-22 23:51 4980
    很不錯,下次試試  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 08:42 andy 林
    哈哈 看來我土了 我第一次看到  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 08:59 Always BaNg.
    @隔葉黃鶯
    估計是注釋截取導致的

    <!-- xxxxx

    后面的被劫了所以能看到。  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 09:00 raof01
    老土~~“遠古”時代就有條件斷點功能了。  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 09:10 bigbigbig
    感謝樓主,非常的實用~  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 09:26 44you
    我也用一下  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 10:54 shanxmxj
    呵呵`~不錯 下次試試看。  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-23 12:28 zhuxing
    條件斷點
    異常斷點
    類加載斷點
    熱替換
    ....
    這些應該是eclipse開發(fā)者經(jīng)常使用到的

    調(diào)試功能使用的熟練程度,也會從一定程度反應出一個開發(fā)人員的基本功。扎實的調(diào)試能力,對修復bug、研究新代碼、加速代碼編寫速度等都有很大的作用  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能[未登錄] 2008-07-23 20:28 hehe
    這是我或許知道的一個調(diào)試功能  回復  更多評論
      

    # re: 或許你不知道的一個調(diào)試功能 2008-07-24 14:47 Yata
    還沒用過,回頭試試!  回復  更多評論
      

    主站蜘蛛池模板: 99久久精品国产亚洲| 亚洲AV无码专区日韩| 亚洲中文字幕无码爆乳| 亚洲精品无码乱码成人| 亚洲av永久无码精品漫画| 久久久久亚洲AV无码永不| 久久亚洲国产最新网站| 青草青草视频2免费观看| 中文字幕免费在线看| 67194国产精品免费观看| 久久香蕉国产线看免费| 一级一级一片免费高清| 国产免费AV片在线观看| 免费一区二区三区在线视频 | 在线观看午夜亚洲一区| 久久久无码精品亚洲日韩蜜桃 | 国产免费的野战视频| 日本免费无遮挡吸乳视频电影| 国产成人精品亚洲精品| 亚洲视频中文字幕在线| 亚洲欧好州第一的日产suv| gogo免费在线观看| 国产一卡二卡3卡四卡免费| 3344永久在线观看视频免费首页| 好爽…又高潮了免费毛片 | 好吊妞在线新免费视频| 久久影视国产亚洲| 亚洲日本在线播放| 黄色免费网站在线看| 在线观看永久免费| 亚洲av再在线观看| 亚洲欧洲在线播放| 一级毛片免费一级直接观看| 最近在线2018视频免费观看| 无码专区一va亚洲v专区在线| 免费v片在线观看无遮挡| 久久久久亚洲AV无码永不| 无码精品人妻一区二区三区免费| 色一情一乱一伦一视频免费看| 久久大香伊焦在人线免费| 国产一级淫片视频免费看|