調試
無論您的計畫多么精密、經驗多么豐富,腳本錯誤 (bug) 可能在最初就使您的 ASP伺服器端的腳本無法正確運行。也就是說調試,即查找和糾正腳本錯誤,對開發一個成功的和強健的 ASP 程式是非常重要的。
調試工具
Microsoft® Script Debugger 是一個功能強大的調試工具,它能幫助您迅速查找錯誤並對伺服器端的腳本進行互動測試。Script Debugger 與 Windows Internet Explorer 3.0 版本或更新的版本一起工作。通過它,您可以:
注意 您可以使用調試工具查看腳本並找到錯誤所在,但是不能直接編輯腳本。要想改正錯誤,必須用編輯器編輯腳本然後保存,再運行腳本。
(該功能不能用於 Windows 95 或更高的版本。)
啟用調試
在開始調試伺服器端腳本之前,您必須首先配置 Web 伺服器,使其支持 ASP 調試。
在啟用 Web 伺服器調試之後,就可以使用下面的任一方法調試腳本:
腳本錯誤
調試伺服器端腳本時,您可能會碰到各種類型的錯誤。其中的某些錯誤使腳本無法正確執行、程式停止執行或返回錯誤結果。
語法錯誤
語法錯誤是經常碰到的錯誤,它是由不正確的腳本語法導致的。例如,命令拼寫錯誤或傳遞給函式的參數不正確都將產生錯誤。語法錯誤可能導致您的腳本不能運行。
運行時錯誤
運行時錯誤是腳本在執行過程中腳本指令試圖執行不可能的動作而導致的。例如,下面的腳本中包含一個被零除(一種非法的數學運算)的函式,將產生運行時錯誤:
<script language = "VBScript" runat = server> Result = Findanswer(15) document.write ("The answer is " &Result) Function Findanswer(x) 'This statement generates a run-time error. Findanswer = x/0 End Function</script>
必須糾正導致運行時錯誤的錯誤,這樣才能使腳本在運行時不被中斷。
邏輯錯誤
邏輯錯誤通常可能是潛在和難以檢測的。如果有因鍵入錯誤或程式邏輯流程錯誤引起的邏輯錯誤,腳本可能會成功運行,但產生的結果卻是錯的。例如,一伺服器端腳本計畫對一個值列表排序,如果本應使用 “<” 符號比較數值,但卻使用了“ >” 符號,那么將返回不正確的排序結果。
錯誤調試技術
可以使用多種不同的調試技術來查找錯誤的根源並測試應用程式。
實時調試
當一個運行時錯誤中斷了 ASP 腳本的執行時,Microsoft 腳本調試程式自動啟動,顯示 .asp 檔案,將語句指針指嚮導致錯誤的行,並產生錯誤訊息。這種調試方式稱為實時 (JIT) 調試,計算機將暫停程式的執行。必須用編輯程式糾正這些錯誤,保存所做的修正,然後再運行腳本。
斷點調試
當一個錯誤發生並且很難找到錯誤的根源時,可使用預設斷點的調試方法。斷點將腳本暫停在特定一行。可以在腳本中有疑問處設定一個或多個不同的斷點,然後使用調試器去改正腳本中設定的變數或屬性的值。當您糾正這些錯誤之後,可以清除斷點以便您的腳本能不間斷地運行。
請用 Microsoft 腳本調試程式打開腳本,設定斷點。然後用 Web 瀏覽器請求此腳本。當執行到腳本中含有斷點的行時,計算機啟動腳本調試程式,並且語句指針會指在設定了斷點的行上。
語句調試器
通過在伺服器端腳本中有問題的部分前面插入Stop語句,您也可以將斷點添加到用 VBScript 編寫的伺服器端腳本中。例如,下面的 ASP 腳本包含一個Stop語句,用來在顯示結果之前暫停執行:
<% dayvalue = 3 TheDay = WeekDayName(dayvalue) Stop 'set breakpoint here. Response.Write("Today is " + TheDay)%>
當您在請求 Web 瀏覽器使用的先前的腳本時,調試程式啟動並自動顯示 .asp 檔案,而且語句指針會指示stop語句的位置。一定要記住從交付使用的 .asp 檔案中刪除Stop語句。
語句調試2
要將斷點加到用 Microsoft® JScript 編寫的伺服器端腳本中,可在有疑問的行前插入debugger語句。例如,下面的腳本包含了debugger語句,每次腳本循環到一個新值時,就會中斷執行並自動啟動 Microsoft 腳本調試程式。
<%@ Language="JScript" %><% for (var count = 1; count <= 10; count++) { var eventest = count%2; debugger //Sets breakpoint if (eventest == 0) { response.write("Even value is " + count + "<br>") } }%>
請記住從交付使用的 .asp 檔案中刪除debugger語句。
注意 不要混淆debugger語句和 JScriptbreak語句。在程式執行期間,break語句僅退出當前循環,並不激活 Microsoft 腳本調試器,也不暫停程式的執行。
腳本調試技巧
除腳本調試程式外,一套好的調試技巧也能減少花費在分析腳本錯誤根源上的大量時間。儘管大部分錯誤是由顯而易見的根源導致的,但命令拼寫錯誤或丟失變數、某種類型的邏輯和執行錯誤也可能因不太明顯的根源所致。