關於在ASP.NET 中進行調試的方法(轉載自itpeople),不過我個人對第三招不以為然,有了v
最後更新:2017-02-28
來源:互聯網
上載者:User
用過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程式,有
個這樣的利器,真是省了我們很多時間啊!怎麼還不