明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

調(diào)試 ASP 腳本(轉(zhuǎn)自IIS5.0文檔)

[摘要]調(diào)試 ASP 腳本無論是否有經(jīng)驗(yàn),您都可能會遇到程序錯(cuò)誤,或叫“bug”,這將影響服務(wù)器端腳本正常工作。因此,對于開發(fā)成功和強(qiáng)大的 ASP 應(yīng)用程序,特別是當(dāng)應(yīng)用程序變得越來越復(fù)雜時(shí),調(diào)試(即發(fā)現(xiàn)和改正腳本錯(cuò)誤的過程)就顯得極其重要了。 Microsoft 腳本調(diào)試程序工具M(jìn)icrosoft 腳本...

調(diào)試 ASP 腳本
無論是否有經(jīng)驗(yàn),您都可能會遇到程序錯(cuò)誤,或叫“bug”,這將影響服務(wù)器端腳本正常工作。因此,對于開發(fā)成功和強(qiáng)大的 ASP 應(yīng)用程序,特別是當(dāng)應(yīng)用程序變得越來越復(fù)雜時(shí),調(diào)試(即發(fā)現(xiàn)和改正腳本錯(cuò)誤的過程)就顯得極其重要了。 Microsoft 腳本調(diào)試程序工具
Microsoft 腳本調(diào)試程序工具是一個(gè)強(qiáng)大的調(diào)試工具,可以幫助您快速定位錯(cuò)誤并可以交互式地測試服務(wù)器端腳本。使用腳本調(diào)試程序,也可以與 Windows Internet Explorer 3.0 或更高版本一起使用,您可以: 每次運(yùn)行一行服務(wù)器端腳本。 在執(zhí)行服務(wù)器端腳本期間,打開命令窗口以監(jiān)視變量、屬性或數(shù)組元素的值。 在腳本的指定行,(使用調(diào)試程序或腳本命令)設(shè)置斷點(diǎn)以暫停執(zhí)行服務(wù)器端腳本。 運(yùn)行服務(wù)器端腳本時(shí)跟蹤過程。
注意 可以使用調(diào)試程序查看腳本和定位錯(cuò)誤,但不能直接編輯腳本。要改正錯(cuò)誤,必須使用編輯程序來編輯腳本,保存更改,然后再次運(yùn)行該腳本。 啟用調(diào)試
在開始調(diào)試服務(wù)器端腳本之前,首先必須將 Web 服務(wù)器配置為支持 ASP 調(diào)試。有關(guān)說明和信息,請參閱啟用 ASP 調(diào)試。
啟用 Web 服務(wù)器調(diào)試后,您可以使用下面任意一種方法調(diào)試腳本: 手工打開腳本調(diào)試程序以調(diào)試 ASP 服務(wù)器端腳本。 使用 Internet Explorer 請求 .asp 文件。如果文件包含錯(cuò)誤或故意用來中斷執(zhí)行的語句,腳本調(diào)試程序?qū)⒆詣?dòng)啟動(dòng),顯示腳本并標(biāo)出錯(cuò)誤的來源。 腳本錯(cuò)誤
調(diào)試服務(wù)器端腳本的過程中,可能遇見幾種類型的錯(cuò)誤。有些錯(cuò)誤可能導(dǎo)致腳本執(zhí)行錯(cuò)誤、中斷程序的執(zhí)行或返回錯(cuò)誤的結(jié)果。 語法錯(cuò)誤
“語法”錯(cuò)誤是一種經(jīng)常遇到的錯(cuò)誤,它是由錯(cuò)誤的腳本語法引起的。例如,命令拼寫錯(cuò)誤或傳遞給函數(shù)的參數(shù)值錯(cuò)誤都可能產(chǎn)生錯(cuò)誤。語法錯(cuò)誤可以阻止腳本運(yùn)行。 運(yùn)行時(shí)錯(cuò)誤
“運(yùn)行時(shí)”錯(cuò)誤發(fā)生在腳本開始執(zhí)行之后,它是由試圖執(zhí)行不可能的操作的腳本指令所引起的。例如,下面的腳本包含一個(gè)函數(shù),該函數(shù)以 0 作為變量的除數(shù)(非法數(shù)學(xué)操作),產(chǎn)生運(yùn)行時(shí)錯(cuò)誤:<SCRIPT LANGUAGE=VBScript RUNAT=SERVER>Result = Findanswer(15)Document.Write ("結(jié)果是 " &Result)Function Findanswer(x)'這條語句產(chǎn)生運(yùn)行時(shí)錯(cuò)誤。Findanswer = x/0End Function</SCRIPT>
運(yùn)行時(shí)錯(cuò)誤必須改正,腳本才會不中斷地執(zhí)行。 邏輯錯(cuò)誤
邏輯錯(cuò)誤是最難以發(fā)現(xiàn)的錯(cuò)誤。邏輯錯(cuò)誤是由鍵入錯(cuò)誤或程序邏輯上的缺陷引起的,腳本運(yùn)行沒問題,但產(chǎn)生的結(jié)果不正確。例如,如果服務(wù)器端腳本將對列表中的值進(jìn)行排序,但在腳本中本該使用 < 符號(小于號)的地方錯(cuò)誤地使用了 > 符號(大于號),將導(dǎo)致排序結(jié)果不正確。 錯(cuò)誤調(diào)試技術(shù)
您可以使用幾種不同的調(diào)試技術(shù)定位錯(cuò)誤源并測試應(yīng)用程序。 實(shí)時(shí)(JIT)調(diào)試
當(dāng)運(yùn)行時(shí)錯(cuò)誤中斷了服務(wù)器端腳本執(zhí)行時(shí),Microsoft 腳本調(diào)試程序自動(dòng)啟動(dòng),顯示 .asp 文件,將語句指針指向?qū)е洛e(cuò)誤的行,并生成錯(cuò)誤消息。使用這種類型的調(diào)試,也叫“實(shí)時(shí)調(diào)試”,計(jì)算機(jī)將暫停進(jìn)一步執(zhí)行程序。必須使用編輯程序改正錯(cuò)誤并保存所作更改,然后才能繼續(xù)運(yùn)行腳本。 斷點(diǎn)調(diào)試
當(dāng)發(fā)生錯(cuò)誤但無法輕松地找到錯(cuò)誤源的時(shí)候,預(yù)先設(shè)置“斷點(diǎn)”有時(shí)會很有用。斷點(diǎn)在指定的腳本行暫停執(zhí)行腳本。可以在可疑的行前面設(shè)置一個(gè)或多個(gè)不同的斷點(diǎn),然后使用調(diào)試程序檢查腳本中設(shè)置的變量或?qū)傩缘闹怠8恼e(cuò)誤后,可以清除斷點(diǎn),這樣腳本就可以不間斷地運(yùn)行了。
要設(shè)置斷點(diǎn),使用腳本調(diào)試程序打開腳本,選擇腳本中想要中斷執(zhí)行的行,然后從“調(diào)試”菜單中選擇“切換斷點(diǎn)”。然后使用 Web 瀏覽器重新請求腳本。執(zhí)行到設(shè)置了斷點(diǎn)的腳本行后,計(jì)算機(jī)啟動(dòng)腳本調(diào)試程序,顯示腳本,并且語句指針指向設(shè)置了斷點(diǎn)的行。 在下一條語句中斷
在某些情況下,如果下一條語句不是運(yùn)行在您所工作的 .asp 文件中,您可能想要啟用腳本調(diào)試程序的“在下一條語句中斷”。例如,如果對駐留在名為 Sales 的應(yīng)用程序中的 .asp 文件設(shè)置了“在下一條語句中斷”,則當(dāng)運(yùn)行 Sales 應(yīng)用程序(或已經(jīng)啟用了調(diào)試的應(yīng)用程序)的任何文件中的腳本時(shí)都將啟動(dòng)調(diào)試程序。有鑒于此,當(dāng)設(shè)置“在下一條語句中斷”時(shí),需要注意無論下一條運(yùn)行的是何種腳本語句,都將啟動(dòng)調(diào)試程序。 VBScript 的 Stop 語句調(diào)試
也可以添加斷點(diǎn)到用 VBScript 編寫的服務(wù)器端腳本中,方法是在服務(wù)器端腳本的可疑部分之前的某個(gè)位置插入一條“Stop”語句。例如,下面的服務(wù)器端腳本包含一條“Stop”語句,該語句將在腳本調(diào)用自定義函數(shù)之前暫停執(zhí)行腳本:<%intDay = Day(Now())lngAccount = Request.Form("AccountNumber")dtmExpires = Request.Form("ExpirationDate")strCustomerID  =  "RETAIL" & intDay & lngAccount & dtmExpires'在此設(shè)置斷點(diǎn)Stop'調(diào)用注冊組件。RegisterUser(strCustomerID)%>
請求該腳本時(shí),調(diào)試程序啟動(dòng)并自動(dòng)顯示 .asp 文件,并且用語句指針指示出“Stop”語句的位置。在該斷點(diǎn)處,您可以選擇檢查在將變量傳遞給組件之前賦給變量的值。
要點(diǎn) 必須將“Stop”語句從生成的 .asp 文件中刪除。 JScript 的 Debugger 語句調(diào)試
要添加斷點(diǎn)到用 VBScript 編寫的服務(wù)器端腳本中,請?jiān)谀_本的可疑行之前插入“debugger”語句。例如,下面的腳本中包含“debugger”語句,它用來中斷執(zhí)行,并在每次腳本循環(huán)通過一個(gè)新值時(shí)自動(dòng)啟動(dòng)腳本調(diào)試程序。<%@ LANGUAGE=JScript %><%for (var count = 1; count <= 10; count++)  {var eventest = count%2//設(shè)置斷點(diǎn),使用戶可以單步執(zhí)行腳本。debuggerif (eventest == 0)Response.Write("Even value is " + count + "<br>")   }%>
必須將“debugger”語句從生成的 .asp 文件中刪除。
注意 不要將“debugger”語句與 JScript 的“break”語句混淆!癰reak”語句用于退出執(zhí)行期間當(dāng)前正在運(yùn)行的循環(huán),并不激活 Microsoft 腳本調(diào)試程序,也不暫停執(zhí)行。 調(diào)試腳本的技巧
除了腳本調(diào)試程序,一套優(yōu)秀的調(diào)試技巧可以大大減少花費(fèi)在研究腳本錯(cuò)誤源上的時(shí)間。雖然大多數(shù)錯(cuò)誤有明顯的來源,如命令拼寫錯(cuò)誤或缺少變量,但還有某些類型的邏輯和執(zhí)行錯(cuò)誤很難發(fā)現(xiàn)。
關(guān)于 Microsoft 腳本調(diào)試程序的詳細(xì)信息,請參閱位于 http://msdn.microsoft.com/scripting/ 的 Microsoft 腳本技術(shù)站點(diǎn)。