官术网_书友最值得收藏!

1.5 在Visual Studio 2010中調(diào)試ASP.NET程序

應(yīng)用程序調(diào)試是整個(gè)應(yīng)用程序開發(fā)中相當(dāng)頻繁且重要的一部分,Visual Studio同樣也提供了非常強(qiáng)大的特性來方便用戶進(jìn)行調(diào)試。為了在Visual Studio中調(diào)試Web頁面,需要先在解決方案資源管理器中選擇該頁面,然后單擊工具欄中的“啟用調(diào)試”按鈕

依賴于應(yīng)用程序所在的位置的不同,如果項(xiàng)目存儲(chǔ)在一個(gè)遠(yuǎn)程的或本地的IIS虛擬目錄中,Visual Studio只是簡單的啟動(dòng)默認(rèn)的瀏覽器并定向到相應(yīng)的URL。如果是在文件系統(tǒng)中,Visual Studio將打開整合的Web服務(wù)器,并動(dòng)態(tài)地選擇一個(gè)端口,然后啟動(dòng)瀏覽器并傳遞指向本地Web服務(wù)的URL。這兩種方式都將編譯頁面并創(chuàng)建傳遞給ASP.NET工作進(jìn)程的頁面對象。

1.5.1 單步調(diào)試

有時(shí)候,可能需要查看每一行代碼的執(zhí)行情況,此時(shí)可以使用單步調(diào)試。單步調(diào)試一次一行的執(zhí)行代碼,到下一行時(shí)等待用戶的操作。單步調(diào)試非常容易使用,只需要如下的3步:

在需要執(zhí)行單步調(diào)試的位置添加斷點(diǎn)。可以將光標(biāo)移到需要添加代碼的行,然后按【F9】鍵,或者直接在代碼邊界單擊一下鼠標(biāo),即可添加一個(gè)斷點(diǎn),如圖1.77所示。

圖1.77 添加斷點(diǎn)

現(xiàn)在按常規(guī)方法啟動(dòng)應(yīng)用程序,如按【F5】鍵,或者單擊工具欄中的“啟用調(diào)試”按鈕。當(dāng)程序執(zhí)行到斷點(diǎn)位置處時(shí),執(zhí)行將暫停,然后窗口將被切換回Visual Studio 2010的代碼視圖,執(zhí)行點(diǎn)將停在斷點(diǎn)所在的語句的位置處,但是斷點(diǎn)語句并未執(zhí)行。

此時(shí),有幾個(gè)選擇,可以按【F11】鍵來逐行地執(zhí)行程序代碼,下一行將被高亮顯示。表示那一行的代碼將要被執(zhí)行。開發(fā)人員可以持續(xù)地按【F11】鍵來單行執(zhí)行代碼,也可以按【F5】鍵來退出中斷模式恢復(fù)代碼的執(zhí)行。

當(dāng)代碼位于中斷模式時(shí),開發(fā)人員可以將鼠標(biāo)光標(biāo)懸停在變量上查看它們的當(dāng)前內(nèi)容。這允許開發(fā)人員檢查變量所包含的值是否如預(yù)期所料。如果懸停在一個(gè)對象上,可以通過單擊加號(hào)來更深入地查看該對象成員相關(guān)的信息,如圖1.78所示。

開發(fā)人員還可以按【F10】鍵來逐過程地執(zhí)行代碼,或者按【Shift+F11】組合鍵跳出斷點(diǎn)模式,直接執(zhí)行代碼。

如果在項(xiàng)目的多個(gè)位置設(shè)置了斷點(diǎn),此時(shí),可以在中斷模式下選擇“調(diào)試|窗口|斷點(diǎn)”菜單項(xiàng),將彈出圖1.79所示的窗口。

圖1.78 查看對象信息

圖1.79 “斷點(diǎn)”窗口

Visual Studio 2010與之前版本的“斷點(diǎn)”窗口的一個(gè)顯著的不同是該窗口增加了斷點(diǎn)的導(dǎo)入和導(dǎo)出的功能,用戶可以使用工具欄的“導(dǎo)出”按鈕將斷點(diǎn)導(dǎo)出為XML文件,或者是從一個(gè)XML文件中導(dǎo)入斷點(diǎn)。

1.5.2 變量檢測

有時(shí),可能開發(fā)人員想查看變量的狀態(tài),而不想一次又一次地進(jìn)入中斷模式。此時(shí),可以使用Visual Studio提供的局部變量窗口、自動(dòng)窗口和監(jiān)視窗口來查看變量的值,這些窗口允許開發(fā)人員追蹤整個(gè)應(yīng)用程序中的變量,這3個(gè)窗口的作用如下。

● 局部變量窗口:自動(dòng)顯示當(dāng)前過程范圍內(nèi)所有變量的值,它提供了一個(gè)快速的概要瀏覽方式,如圖1.80所示。

● 自動(dòng)窗口:自動(dòng)地顯示Visual Studio 2010確定的當(dāng)前代碼語句塊的重要變量。比如,可能包含已經(jīng)被訪問或在上一行中被變化的變量,如圖1.81所示。

● 監(jiān)視窗口:顯示開發(fā)人員添加的變量的值,監(jiān)視的變量被保存在項(xiàng)目中,因此可以在稍后繼續(xù)進(jìn)行追蹤。為了添加一個(gè)監(jiān)視,可以在代碼視圖中用鼠標(biāo)右鍵單擊變量名稱,在彈出的快捷菜單中選擇“添加監(jiān)視”菜單項(xiàng),或者是在監(jiān)視窗口的最后一行上雙擊,輸入變量名稱,如圖1.82所示。

圖1.80 局部變量窗口

圖1.81 自動(dòng)變量窗口

圖1.82 監(jiān)視窗口

在局部、自動(dòng)和監(jiān)視窗口中的每行都提供了關(guān)于變量的類型或類及當(dāng)前值信息,如果變量保存了一個(gè)對象實(shí)例,開發(fā)人員可以單擊“+”按鈕來展開其私有成員和屬性。比如,在本地窗口中會(huì)看到引用Page對象的this變量,如果單擊“+”按鈕,則會(huì)看到Page頁的成員,如圖1.83所示。

圖1.83 局部變量的詳細(xì)信息

1.5.3 高級(jí)斷點(diǎn)設(shè)置

開發(fā)人員按【F9】鍵或者是用鼠標(biāo)單擊代碼編輯器左側(cè)的邊框來添加一個(gè)斷點(diǎn),通過選擇“調(diào)試|窗口|斷點(diǎn)”菜單項(xiàng)來打開“斷點(diǎn)”窗口。該窗口提供了高級(jí)的選項(xiàng)來設(shè)置高級(jí)斷點(diǎn),如提供了命中次數(shù)設(shè)置,向開發(fā)人員顯示斷點(diǎn)已經(jīng)被執(zhí)行的次數(shù)。開發(fā)人員可以雙擊斷點(diǎn)來跳轉(zhuǎn)到斷點(diǎn)所在的位置。也可以在“斷點(diǎn)”窗口中禁用一個(gè)斷點(diǎn),而不是移除這個(gè)斷點(diǎn)。

Visual Studio 2010讓開發(fā)人員可以定義條件斷點(diǎn),為了定義條件斷點(diǎn),選中“斷點(diǎn)”窗口中的某個(gè)斷點(diǎn),單擊鼠標(biāo)右鍵,將會(huì)彈出可供使用的幾個(gè)高級(jí)斷點(diǎn)選項(xiàng),如下所示。

● 位置選項(xiàng):選擇該選項(xiàng)后,將會(huì)彈出圖1.84所示的窗口,在該窗口中可以設(shè)置讓程序執(zhí)行到指定的位置時(shí),中斷開始執(zhí)行。

● 條件選項(xiàng):使用該選項(xiàng)可以設(shè)置一個(gè)條件表達(dá)式,可以選擇僅當(dāng)該條件表達(dá)式為true時(shí)才執(zhí)行斷點(diǎn),或者是當(dāng)最后一次斷點(diǎn)被命中后發(fā)生改變時(shí)才執(zhí)行斷點(diǎn),如圖1.85所示。

● 斷點(diǎn)命中次數(shù)選項(xiàng):使用該選項(xiàng)可以設(shè)置斷點(diǎn)的執(zhí)行次數(shù),默認(rèn)情況下只要代碼執(zhí)行到斷點(diǎn)所在的位置就中斷執(zhí)行,也可以設(shè)置在命中次數(shù)為多少次數(shù)時(shí)才中斷代碼的執(zhí)行,如圖1.86所示。

圖1.84 根據(jù)指定的位置執(zhí)行斷點(diǎn)

圖1.85 根據(jù)指定的條件執(zhí)行斷點(diǎn)

圖1.86 使用命中次數(shù)選項(xiàng)

● 斷點(diǎn)篩選器選項(xiàng):使用該選項(xiàng)可以限制只在某些進(jìn)程和線程中設(shè)置斷點(diǎn),如果不設(shè)置篩選器,則在所有的線程和進(jìn)程中設(shè)置斷點(diǎn)。開發(fā)人員可以使用MachineName設(shè)置機(jī)器名稱,ProcessId設(shè)置進(jìn)程ID,ThreadId設(shè)置線程ID,如圖1.87所示。

● 命中斷點(diǎn)時(shí)選項(xiàng):開發(fā)人員可以在命中斷點(diǎn)時(shí)來執(zhí)行一些動(dòng)作,如打印消息或執(zhí)行Visual Studio的宏,窗口如圖1.88所示。

圖1.87 斷點(diǎn)篩選器窗口

圖1.88 命中斷點(diǎn)時(shí)的選項(xiàng)

除了上述介紹的一些用于輔助開發(fā)的工具外,開發(fā)人員也可以使用一些第三方的輔助工具來加速應(yīng)用程序的調(diào)試過程,限于篇幅原因,這里不再進(jìn)行介紹。

主站蜘蛛池模板: 天门市| 连州市| 南康市| 永仁县| 庆云县| 靖州| 垫江县| 淮南市| 区。| 铁力市| 云梦县| 那曲县| 尼木县| 普兰县| 二连浩特市| 四会市| 玉林市| 会泽县| 斗六市| 武强县| 阿坝| 广平县| 新宾| 桃园县| 礼泉县| 凤阳县| 漳州市| 芜湖县| 浑源县| 万宁市| 文成县| 应用必备| 日土县| 柳林县| 湛江市| 奉贤区| 平安县| 洱源县| 嘉祥县| 弥勒县| 公安县|