如何調試ASP服務端的組件技術
本文主要介紹如何調試ASP服務端組件技術,包括這個複雜的出錯資訊:
一、ASP 0115 Error。
二、代碼在單獨的EXE檔案裡面運行良好,但是一旦放入ASP中產生調用失敗的資訊
本文背景:
第一種情況:你在你的瀏覽器中可否看見過這種資訊呢?
Error \'ASP 0115\'
Unexpected error
file://.asp
A trappable error occurred in an external object. The script
cannot continue running.
這就是令每個程式員都頭疼的ASP 0115錯誤,這個錯誤可以由很多原因而導致的。也許許多人會推測可能是由於微軟本身的bug而導致的,並抱怨是由於微軟沒有給出響應的補丁。
其實在實踐中有一些確實如此,但是大多數情況下事實並不是如此。
而很多是由於你自己寫的代碼中錯誤的訪問了Inetinfo.exe的進程而產生的。
第二種情況:你是否遇到過這種尷尬的情況,自己寫的代碼如果是在一個exe項目種能夠良好的運行,但是一旦你從一個ASP頁面種調用它的時候,就會失敗呢?
同樣,發生這個現象的原因也很多,而其中的大多數原因是由於ASP是運行在一個特定的系統帳號下的,在這樣的背景下,它啟動並執行許可權是一個不容忽視的問題。
我想,做了這麼久的程式員,很多人都有豐富地單獨調試一個EXE程式的經驗了,但是當你是在編寫運行在IIS環境下的程式時,你將面臨和傳統的調試更多的挑戰。
儘管可以使用VB或則VC++來編寫ASP的組件,但是VC++的調試器都將是你最好的調試工具。
準備好你的組件
為了調試你編寫的組件,你必須要有調試需要的資訊。 Symbols允許在你的組件出錯時顯示出是你編寫的代碼中的第幾行出現了錯誤。
那我們在VB中如何產生組件需要的symbols呢?
如果你的組件是使用VB編寫的話,你可以通過選擇Compile菜單中的ProjectProperties命令來建立你的組件的調試資訊.
確保你將代碼編譯成’Native Code’和使用’No Optimization’.
那我們在VC++中如何產生組件需要的symbols呢?
如果你的組件是使用VC++編寫的話,最簡單的方法是選擇調試配置來產生調試資訊。從Build菜單中單擊’Set Active Project Configuration’.你將發現’Win32 Debug’這個選項。
或則, 你可以手工來定義組件需要包含的調試出錯資訊,選擇Project菜單中的Settings然後到Link頁.確保Generate debug info被選中。
開始調試進程
在前面已經提到了,我們將使用VC++來完成調試工作。好,運行它,當然沒有必要建立一個項目或則工作間了。
選擇Build菜單中的Start Debug中的Attach to Process. 在Attach to Process對話方塊中,選中Show System Processes.從列表框中找到進程inetinfo, 然後單擊OK。
下一步,你要確保symbols已經被轉載入記憶體。從Project菜單中,單擊Settings選擇Debug頁,從Category下拉框中選擇Additional DLLs’
如果你沒有在列表中看到你編寫的組件,單擊第一行空行,然後輸入檔案名稱,或則選擇那個’...’按鈕來尋找這個檔案名稱,單擊OK。
好了,現在你已經裝載了你的symbols,你需要裝載一些原始碼。
從File菜單中選擇Open.找到你想調試的源檔案。如果你的組件是使用VB編寫的話,確保在Files of Type下拉框中選擇所有檔案類型,然後找到你需要的檔案後,單擊Open。
好了,現在你可以在你的代碼中放置斷點,設定觀察值,查看呼叫堆疊等等就象你在調試一個傳統的exe一樣了。