無論您的計劃多麼精密、經驗多麼豐富,腳本錯誤 (bug) 可能在最初就使您的 ASP服務器端的腳本無法正確運行。也就是說調試,即查找和糾正腳本錯誤,對開發一個成功的和強健的 ASP 程序是非常重要的。
Microsoft 腳本調試工具
Microsoft® Script Debugger 是一個功能強大的調試工具,它能幫助您迅速查找錯誤並對服務器端的腳本進行交互測試。Script Debugger 與 Windows Internet Explorer 3.0 版本或更新的版本一起工作。通過它,您可以:
逐行運行服務器端腳本。
在服務器端腳本執行時,打開命令窗口監視變量、屬性或數組元素的值。
在特定行設置暫停標記,掛起服務器端腳本(使用調試工具或腳本命令)。
在運行服務器端腳本時跟蹤過程。
注意 您可以使用調試工具查看腳本並找到錯誤所在,但是不能直接編輯腳本。要想改正錯誤,必須用編輯器編輯腳本然後保存,再運行腳本。
(該功能不能用於 Windows 95 或更高的版本。)
啟用調試
在開始調試服務器端腳本之前,您必須首先配置 Web 服務器,使其支持 ASP 調試。
在啟用 Web 服務器調試之後,就可以使用下面的任一方法調試腳本:
手工打開 Microsoft 腳本調試器,調試 ASP 服務器端腳本。
使用 Internet Explorer 請求 .ASP 文件。如果該文件包含錯誤或人為添加的停止執行語句,那麼 Microsoft 腳本調試程序將自動啟動,顯示該腳本,並且指出錯誤來源。
腳本錯誤
調試服務器端腳本時,您可能會碰到各種類型的錯誤。其中的某些錯誤使腳本無法正確執行、程序停止執行或返回錯誤結果。
語法錯誤
語法錯誤是經常碰到的錯誤,它是由不正確的腳本語法導致的。例如,命令拼寫錯誤或傳遞給函數的參數不正確都將產生錯誤。語法錯誤可能導致您的腳本不能運行。
運行時錯誤
運行時錯誤是腳本在執行過程中腳本指令試圖執行不可能的動作而導致的。例如,下面的腳本中包含一個被零除(一種非法的數學運算)的函數,將產生運行時錯誤:
<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>
必須糾正導致運行時錯誤的錯誤,這樣才能使腳本在運行時不被中斷。
邏輯錯誤
邏輯錯誤通常可能是潛在和難以檢測的。如果有因鍵入錯誤或程序邏輯流程錯誤引起的邏輯錯誤,腳本可能會成功運行,但產生的結果卻是錯的。例如,一服務器端腳本計劃對一個值列表排序,如果本應使用 “<” 符號比較數值,但卻使用了“ >” 符號,那麼將返回不正確的排序結果。
錯誤調試技術
可以使用多種不同的調試技術來查找錯誤的根源並測試應用程序。
實時 (Just-In-Time, JIT) 調試
當一個運行時錯誤中斷了 ASP 腳本的執行時,Microsoft 腳本調試程序自動啟動,顯示 .ASP 文件,將語句指針指向導致錯誤的行,並產生錯誤消息。這種調試方式稱為實時 (JIT) 調試,計算機將暫停程序的執行。必須用編輯程序糾正這些錯誤,保存所做的修正,然後再運行腳本。
斷點調試
當一個錯誤發生並且很難找到錯誤的根源時,可使用預設斷點的調試方法。斷點將腳本暫停在特定一行。可以在腳本中有疑問處設置一個或多個不同的斷點,然後使用調試器去改正腳本中設置的變量或屬性的值。當您糾正這些錯誤之後,可以清除斷點以便您的腳本能不間斷地運行。
請用 Microsoft 腳本調試程序打開腳本,設置斷點。然後用 Web 浏覽器請求此腳本。當執行到腳本中含有斷點的行時,計算機啟動腳本調試程序,並且語句指針會指在設置了斷點的行上。
VBScript Stop 語句調試器
通過在服務器端腳本中有問題的部分前面插入 Stop 語句,您也可以將斷點添加到用 VBScript 編寫的服務器端腳本中。例如,下面的 ASP 腳本包含一個 Stop 語句,用來在顯示結果之前暫停執行:
<%
dayvalue = 3
TheDay = WeekDayName(dayvalue)
Stop 'set breakpoint here.
Response.Write("Today is " + TheDay)
%>
當您在請求 Web 浏覽器使用的先前的腳本時,調試程序啟動並自動顯示 .asp 文件,而且語句指針會指示 stop 語句的位置。一定要記住從交付使用的 .ASP 文件中刪除 Stop 語句。
用 JScript Debugger 語句調試
要將斷點加到用 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 語句和 JScript break 語句。在程序執行期間,break 語句僅退出當前循環,並不激活 Microsoft 腳本調試器,也不暫停程序的執行。
腳本調試技巧
除腳本調試程序外,一套好的調試技巧也能減少花費在分析腳本錯誤根源上的大量時間。盡管大部分錯誤是由顯而易見的根源導致的,但命令拼寫錯誤或丟失變量、某種類型的邏輯和執行錯誤也可能因不太明顯的根源所致。