JavaScript 調試器 firefox venkman

以前我比較輕視javascript,但在的工作中越來越感覺到它的重要,測試部給我報的bug也多半源於此,所以決心補習js,那麼首先要搞定的就是調試器,發現firefox 下的venkman很不錯,強大 小巧,而且免費。

 

 

 

基於Mozilla的瀏覽器(如firefox)有個JavaScript調試環境,叫venkman,可以從http://www.hacksrus.com/~ginda/venkman/下載,然後用firefox打開得到的xpi文件,它就會自動安裝,重啓firefox,選擇 工具->JavaScript Debugger 啓動venkman,如圖,

 

窗口布局很清晰,Loaded Scripts窗口中顯示當前可用的javascript,點擊文件旁邊的加號,就會打開一個詳細列表,列出該文件中的所有函數,其他窗口不用多說了。

 

 

 

 

 

斷點跟蹤纔是我們關注的重點,venkman支持兩種斷點:硬(hard)端點和將來(future)斷點。

 

 

 

 

 

兩者的區別是,將來斷點設置在函數體之外的代碼行上。一旦這些代碼行加載到瀏覽器上就會立即執行。與之相反,只有當爲響應某個動作或事件執行了函數時,位於函數體內的代碼纔會?蔥小?

 

 

 

 

 

看例子,一個js文件 DebugSample.js,和一個調用頁面 CallPage.html

 

 

 

 

 

// DebugSample.js

 

 

 

 

 

var dateString = new Date().toString();

function doFoo(){

       var x = 2 + 2;

       var y = "hello";      

       alert("test");

}

 

 

 

 

 

// CallPage.html

<html>

       <title>test page</title>

       <script language="JavaScript" src="DebugSample.js"></script>

       <body>

              <form id="test">

                     <input type="button" value="test" οnclick="doFoo()"/>

              </form>

       </body>

</html>

 

 

 

 

 

firefox打開CallPage.html,啓動venkman,在所需的代碼行上設置一個斷點,點擊代碼行左側的邊欄即可。每次點擊這一行時,這行就會輪流的切換爲以下3種:無斷點、硬斷點、將來斷點。硬斷點由一個紅色的B指示,將來斷點有橙色的F指示。函數體外的代碼行只能切換爲無斷點和將來斷點。

 

 

 

 

 

我們在var y = "hello";這一行設個斷點

然後點擊頁面的“test”按鈕,可以看到在斷點處停止了

接下來的操作想必都知道了,它和其他的debugger用法相同,下面看一下venkman的一個強大特性,可?員嘈炊ㄖ拼耄⒃諉看沃蔥卸系閌痹誦姓廡┒ㄖ拼搿T?Breakpoints窗口中,右鍵點擊一個斷點,選擇Breakpoint Properties(斷點屬性)

 

這樣會打開Breakpoint Properties對話框,允許你修改斷點的行爲

 

這個窗口的強大之處在於“Wen triggered, execute…(如果觸發,則執行…),選中這個複選框,會置一個文本框有效,可以編寫js代碼,每次遇到斷點時都會執行此代碼,向這個定製腳本傳遞的參數名爲_count_,它表示遇到斷點的次數,下面的4個行爲中也以“Stop if result is true”的功能最強大,它意味着只有當定製代碼的返回值爲true時斷點纔會暫停執行。

 

 

 

 

 

想象一下,假設你在迭代處理一個很大的對象列表,開發過程中,你注意到,計算時在一個特定對象處失敗了。如果只是處理單個對象或只是個小的對象列表,則沒有問題,在循環中設個斷點,進行跟蹤,但如果列表很大,這樣每個循環都進就很麻煩,這時就可以使用條件斷點功能,知道某種情況會失敗,編一個條件語句,滿足條件時斷點才暫停。

 

 

 

 

 

繼續看例子,在上面的DebugSample.js中添加方法:

function testBreakpointProperties(){

       var list = ["one", "two", "three", "four", "five", "six", "seven", "eight"];

 

 

 

 

 

       var item = null;

       for(var i=0; i<list.length; i++){

              item = list[i];

              item = "Text is: " + item;

       }

}

CallPage.html中按鈕的onclick改爲οnclick="testBreakpointProperties()",在venkman中設置斷點

 

 

 

 

 

右鍵點擊紅色斷點標記,選擇Breakpoint Properties,打開對話框,選擇“Wen triggered, execute…”,在文本框中輸入“return item == "seven";”,再選擇“Stop if result is true”,在頁面點擊“test”按鈕會進入venkman,這時item的值爲“seven”,很方便吧,省去了我們自己一個一個循環的跟蹤。

 

轉自:http://www.zhuoda.org/irini/71408.html

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章