ASP系列講座(十七)調試ASP 腳本
作者:Eve Cole
更新時間:2009-05-30 19:58:42
無論您的計劃多麼精密、經驗多麼豐富,腳本錯誤(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 腳本偵錯器,也不暫停程式的執行。
腳本偵錯技巧除腳本偵錯程式外,一套好的偵錯技巧也能減少花費在分析腳本錯誤根源上的大量時間。儘管大部分錯誤是由顯而易見的根源導致的,但命令拼寫錯誤或丟失變數、某種類型的邏輯和執行錯誤也可能因不太明顯的根源所致。