關于在ASP.NET 中進行調試的方法(轉載自itpeople),不過我個人對第三招不以為然,有了v
2024-07-10 12:58:19
供稿:網友
 
    用過asp的人對它的調試應該是記憶深刻的。在整片整片的代碼中找到那幾個
出錯的地方,難度可想而知。現在微軟推出了asp的更新換代產品asp.net。對于
asp.net的好處,我想很多網站都已經介紹了差不多的,不過對于asp.net的調試
講得就不是很多了。所以,我就以我的一點個人經驗寫了這一篇文章。由于,我
也是接觸asp.net不久,錯漏之處在所難免,還請大家多多指正。好了,言歸正傳。
第一招:配置config.web
    一般,當我們寫好的網頁運行出錯了,asp.net就會在頁面上告訴我們程序有
錯了,但究竟錯在哪里,它是沒有提示的。為了能讓asp.net進一步提示我們出錯
的信息。我們就有必要編輯config.web中的配置信息。
    可能還有很多剛剛接觸asp.net的人不太了解config.web這個文件。那我就順便介紹一下。config.web是asp.net的一個配置文件,它里面存放著關于asp.net的所有配置信息。當執行一個asp.net頁面時,它會先到該頁面所在的目錄查找這個文件,如果沒有找到,就往上一級目錄找,一直到wwwroot目錄。如果都沒有,它就會調用x:/winnt/microsoft.net/framework/v1.0.2204目錄中的config.web文件(x為系統目錄)。所以,如果大家要想改變所有頁面的配置,就應該改winnt目錄中的那個config.web。另外順便說一下,當你打開config.web后,你會發現這是一個xml結構的配置文件。
    好了,介紹解說這么多了,回到我們的主題。現在你要做的第一步就是:打
開或者新建一個config.web文件。我們分開來說:
如果是新建,你就需要用文本編輯器新建一個新的文檔,然后往里面輸入下
面的語句:
<configuration>
<customerrors mode="off"></customerrors>
</configuration>
    輸完后選擇另存為,輸入文件名config.web,將它保存到當前頁面相同的文件夾中即可。如果是修改一個已經存在的config.web文件,你只需要用文本編輯器打開它,然后在<configuration>和</configuration>之間的任意地方輸入:
<customerrors mode="off"></customerrors>即可。
    現在你可以在看一下出錯頁面的提示信息了。
    上一次我們說到配置config.web文件,讓出錯信息給出更多的提示。可光有
提示又有什么用呢?“最多就是知道錯在哪里,可我還是不會改呀!”別急,別
急,看看咱們這篇文章叫什么來著,“三板斧”,那當然是一斧賽過一斧啦!上
次那招不夠厲害,我們還有下面的那,所以別急啊,且聽我慢慢道來。
第二招:trace追蹤
    用過asp的人應該都用過下面的語句吧:
    response.write xxx
    response.end
    雖然我不太喜歡asp的編程方法,但是這種方便的調試手段還是很好的。換用
asp.net以后,我發現asp.net提供一種更強大的調試方法,它就是我們現在要說
的trace。所謂trace功能就是在網頁的最前面加上一些標記,至于是什么標記呢?嘿嘿,我不能馬上告訴你(不好,臭雞蛋……哇!)。我是說,我要先介紹一點基礎的知識啦!
    我不知道大家對asp.net的頁面標示了解多少,為了下面講解的方便,我還是
概要的介紹一下吧!asp.net的頁面標示指的是在每一個asp.net頁面最上面,用
<%@和%>括起來的語句。它的功能是用來確定在處理asp.net文件的時候,需要系
統做一些什么特殊的設定。具體的語法如下:
<%@ directive attribute=value %>
其中:directive就是頁面標示符;attribute是該標示符對應的一些屬性。
注意:在屬性之間需要空格,而在"="之間不能有空格。
asp.net現在包含以下7種標識
@ page, 
@ control,
@ import,
@ registe, 
@ assembly,
@ outputcache, 
@ webservice
    我們用得最多的就是@ page標示,而現在我要講的trace功能,也要用到@ page。(關于這七個標示的具體應用,我會在以后發貼講述的。)好了,回到我們的主題。要用trace功能,你必須在頁面的最上面加上:<%@ page trace="true" %> 這句話。加好后,你就可以看看頁面的運行情況了。運行該頁面。你會發現在頁面的下半部分出現了一大堆的數據。下面就來解釋一下這些數據的含義:
request details:通過request方式向瀏覽器所讀取的數據;
trace information:事件發生或程序執行的過程信息;
control tree:網頁所使用的控件及控件之間的階層關系;
cookies collection:網頁所使用的cookie信息;
headers collection:瀏覽器的表頭信息。
server variables:server變量的數據信息。
    有了這一大堆數據,我們的工作就好做多了,但且慢歡喜,trace還提供了更強大的功能,請接著看下去。
    
    除了讓asp.net頁面顯示這一堆數據外,我們還可以將程序中用到的變量的
值實時的顯示在trace information區段中,其方法是調用trace.warn或trace.write兩個方法。他們的用法如下:
trace.warn("description",variables);
trace.write("description",variables);
    我想你們一定會問,這兩個有什么區別呢?回答是:在功能上,這兩個是一模一樣的,只是在顯示上,trace.warn將會以紅色字體表示
第三招 查錯神器debugger
    要用好的兵器,沒點準備是不行的,所以我們就先來做點準備運動。
    1.config.web的設定:還記得第一招中講的嗎?對了,還是這個文件,打開它,向里面加入這條語句
    <compilation debugmode="true"></compilation>
    說明:由于在預設情況下,asp.net會以正常模式來運行頁面,為了能讓它以查錯模式編譯網頁,我們就必須加入這句語句。
    2.啟動查錯工具dbgurt.exe:這個程序放在x:/program files/microsoft.net/frameworksdk/guidebug目錄里,文件名是dbgurt.exe
    3.激活查錯功能:
    運行dbgurt.exe程序
    --〉選取菜單debug/processes
    --〉在出現的processes對話框中選中show system processes和show processes in all sessions
    --〉在available processes列表框的最下面找到xspwp.exe(如果沒有,請運行一.aspx頁面,然后按refresh鍵。)
    --〉選取該文件后,按attach鍵
    --〉在出現的對話框中選中common language runtime,然后按ok,回到processes對話框
    --〉按close鍵
    --〉在程序的主菜單中選取file/open/file,打開你想要檢測的文件。
    下面正式開始頁面調試。
    利用dbgurt.exe打開欲調試的文件后,我們要做的第一件事情就是:設置斷
點。是不是覺得和其它windows應用程序的調試很像(什么很像?簡直就是一模
一樣嗎!)加斷點的方法很簡單,先決定需要加斷點的地方,然后將光標移動到
該行,按下f9或者在該行的最前面點擊鼠標左鍵,該句前面就會出現一個問號的
標記,這就是斷點!我們當然可以設定多個斷點,只要你喜歡。你要是像取消一
個斷點,只需在該行重復設置斷點的動作即可。
    設置好斷點后,只要使用瀏覽器瀏覽被調試的頁面,當程序運行到斷點的位
置時,它就會自動彈出dbgurt.exe,并且停在剛才的斷點位置。這是,我們就可
以利用command window-immediate窗口檢查變量的值了。
    當我們想繼續執行當前頁面時,我們有幾種選擇:
    1、按f5鍵,運行到下一個斷點,若沒有斷點,則運行完該頁面;
    2、按f11鍵,執行單步操作;
    3、按f10鍵,同樣是單步操作,但它會進入子程序(函數)中的語句。
    當然,dbgurt.exe的功能肯定比我介紹的要強大的多。編寫asp.net程序,有
個這樣的利器,真是省了我們很多時間啊!怎么還不快試試!