![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 站務人員 站長 ![]()
![]() ![]() ![]() |
Microsoft Script Debugger 工具 Microsoft Script Debugger 是一個功能強大的偵錯工具,可與 3.0 版以上 (含 3.0 版) 的 Windows Internet Explorer 搭配,幫助我們找出程式中的錯誤,並以互動的方式測試伺服器端的指令。Script Debugger 的功能包括: 一次執行一行伺服器端指令。 開啟指令視窗,監視伺服器端指令執行時各項變數、屬性或陣列參數的值。 利用此偵錯工具或在程式中加上特殊的指令設定中斷點,讓伺服器端程式執行到指令的某一行時便停下來。 在伺服器端指令執行時同步追蹤各個程序。 注意事項 偵錯工具可以檢視指令以及找出錯誤,但不能直接修改指令。 要修正程式中的錯誤,請用編輯軟體來編輯您的指令並存檔,然後再重新執行指令。 啟用偵錯功能 開始對伺服器端指令偵錯前,應該先將 Web 伺服器設定成支援 ASP 偵錯功能。 若需相關的指示與資訊,請參閱啟用 ASP 偵錯功能。 Web 伺服器的偵錯功能啟用之後,就可以利用以下任何一種方法開始對指令進行偵錯: 手動開啟 Script Debugger,對 ASP 伺服器端指令偵錯。 使用 Internet Explorer 要求一個 .asp 檔案。 如果這個檔案中有錯誤,或者您在其中故意放了一個停止執行的陳述式,Script Debugger 便會自動啟動將此指令顯示出來,並指出錯誤的地方。 指令錯誤 對伺服器端指令進行偵錯時,可能會碰到好幾種錯誤。其中有些錯誤會使得指令的執行不正確或導致指令停止執行,有的則會導致程式傳回錯誤的結果。 語法錯誤 語法錯誤是最常見的一種錯誤,這是由於指令某部分的語法不合乎規定所導致的。例如指令拼錯或傳給函數的引數個數不對,都會產生錯誤。 語法錯誤會使得指令無法執行。 執行時期錯誤 執行時期錯誤指的是指令開始執行之後,由於指令做了一些不正確的動作而導致的錯誤。例如以下這個指令中就有一個函數用 0 當作除數 (在數學上來講,0 是不可以當作除數的),因此會產生執行時期錯誤: <SCRIPT LANGUAGE=VBScript RUNAT=SERVER> Result = Findanswer(15) Document.Write ("The answer is " &Result) Function Findanswer(x) '以下這個陳述式會導致執行時期錯誤。 Findanswer = x/0 End Function </SCRIPT> 導致執行時期錯誤的臭蟲一定要抓出來並加以更正,指令才能正確無誤地順利執行。 邏輯錯誤 邏輯錯誤是最難偵測出來的一種錯誤。其原因可能是打錯字或程式的邏輯上有瑕疵,以致於指令雖然可以從頭到尾順利執行完畢,但得到的結果卻是不正確的。例如原本要將一連串數字依大小順序排序的伺服器端指令,很可能就因為在比較數值的地方把應該用的小於 (<) 符號不小心寫成大於 (>),於是程式執行完排出來的順序當然就不正確了。 偵錯技巧 以下幾種偵錯技巧,都可以幫助我們測試應用程式找出錯誤的地方。 即時 (JIT) 偵錯 當伺服器端指令遇到執行時期錯誤而導致不能繼續執行時,Microsoft Script Debugger 便會自動啟動,將此 .asp 檔顯示出來,並在其中標出導致錯誤的敘述,同時顯示錯誤訊息。此種偵錯方式稱為即時 (Just-In-Time, JIT) 偵錯,可讓電腦暫停程式的執行。您必須用編輯軟體將錯誤更正並存檔,然後才能繼續執行指令。 中斷點偵錯 當程式有錯誤產生但又不容易找出真正導致錯誤的地方時,可以嘗試利用設定中斷點的方式進行偵錯。中斷點可使得指令執行到您指定的敘述時便暫停執行。您可以在您懷疑的敘述之前設定一個或多個中斷點,然後用偵錯程式檢查指令中各項變數或屬性的值是否正確。等找出錯誤並加以更正之後,再將中斷點清除,就可以讓指令順利執行了。 設定中斷點的方法如下:用 Script Debugger 開啟指令,選取要中斷執行的敘述,然後選擇 [偵錯] 功能表中的 [切換中斷點]。接著用 Web 瀏覽器再次要求此指令。當指令執行到您設定中斷點的這行敘述時,電腦就會啟動 Script Debugger 顯示此指令,並把設定中斷點的陳述式標示出來。 在下一個陳述式中斷 在某些狀況下,如果下一個要執行的陳述式不在您的 .asp 檔案內時,您可能會想要啟用 Script Debugger 的 [在下一個陳述式中斷] 功能。假設 Sales 這個程式內有一個 .asp 檔案,而且我們在這個檔案內設定 [在下一個陳述式中斷],則當我們執行 Sales 中任何一個檔案內的指令,或任何一個已經啟用偵錯的應用程式時,偵錯程式便會自動啟動。因此當您設定 [在下一個陳述式中斷] 時,應當注意不管接下來執行的是哪一個指令陳述式,只要一執行下去,偵錯程式都會自動啟動。 利用 VBScript 的 Stop 陳述式來偵錯 如果您的伺服器端指令是用 VBScript 設計的,那麼您還可以在程式中懷疑有問題的地方之前,加上 Stop 陳述式來設定中斷點。例如以下這個伺服器端指令就含有一個 Stop 陳述式,使得此程式在即將呼叫另一個自訂的函數之前暫停執行: <% intDay = Day(Now()) lngAccount = Request.Form("AccountNumber") dtmExpires = Request.Form("ExpirationDate") strCustomerID = "RETAIL" & intDay & lngAccount & dtmExpires '把中斷點設定在這裡。 Stop '呼叫註冊元件。 RegisterUser(strCustomerID) %> 當您要求這個指令時,偵錯程式便會啟動,並自動將這個 .asp 檔案顯示出來,在其中標示出 Stop 陳述式的位置。 在程式把變數傳給該元件之前,您有機會仔細檢查這些變數的值。 重要 寫好的程式要上線之前,請務必記得把其中的所有 Stop 陳述全部拿掉。 利用 JScript 的 Debugger 陳述式來偵錯 如果您的伺服器端指令是用 JScript 撰寫的,可以在程式中您懷疑的地方之前加上 debugger 陳述式。例如以下這個指令中就含有一個 debugger 陳述式,當迴圈每次用新的值執行到這個地方時,程式便會暫停,並自動啟動 Script Debugger。 <%@ LANGUAGE=JScript %> <% for (var count = 1; count <= 10; count++) { var eventest = count%2 //在此處設定中斷點,讓使用者一步一步執行指令。 debugger if (eventest == 0) Response.Write("Even value is " + count + " ") } %> 當您設計的 .asp 檔案要上線時,請務必記得把程式中的所有 debugger 陳述拿掉。 注意事項 請勿將 debugger 陳述式與 JScript 的 break 陳述式混淆。break 陳述式的目的是從正在執行的迴圈中跳出來,並不會啟動 Microsoft Script Debugger,也不會導致程式暫停執行。 指令偵錯秘訣 除了 Script Debugger 之外,其他還有一些偵錯時常運用的秘訣,可以大幅降低您調查指令錯誤時所花費的時間。雖然大部分的錯誤都是很明顯一眼就可以認出來的,但還是有一些很難找出來的錯誤,例如拼錯指令或變數、某些類型的邏輯錯誤與執行錯誤等等。 若需有關 Microsoft Script Debugger 的其他資訊,請參閱 Microsoft Scripting Technologies 網站 http://msdn.microsoft.com/scripting/。 -------------------------------------------------------------------------------- (C) 1997-1999 Microsoft Corporation. All rights reserved.
本篇文章發表於2001-01-15 00:00
|