摘要:VS 2010 和 .NET 4.0 系列之《VS 2010 偵錯器的改進 (中斷點,資料提示,導入/導出)》篇
【原文位址】 VS 2010 Debugger Improvements (BreakPoints, DataTips, Import/Export)
【原文發表日期】 Wednesday, April 21, 2010 4:43 PM
這是我針對VS 2010 和 .NET 4所撰寫的 文章系列 的第二十一篇。今天的部落格討論VS 2010偵錯器可用性方面若干很棒的改進。
VS 2010偵錯器有成堆的新功能。像Intellitrace(也稱為歷史偵錯),新的平行/多執行緒偵錯功能, 以及 轉儲(dump)偵錯支援這樣的特性在大家談論這個版本中偵錯方面的改進時,往往得到更多的(也是非常應得的)關注。我會在將來的部落格中示範如何利用這些新的特性。
但在今天的文章中,我想我先討論包括在VS 2010發佈中的幾個小的,但非常棒的偵錯器可用性方面的改進,我想你會發現它們非常地有用。
中斷點標籤(Breakpoint Labels)
VS 2010包含了一些新支援,以便更好地管理偵錯器中斷點,一個特別有用的特性叫做「中斷點標籤」,它促成了對一個專案中或跨越解決方案的中斷點的更好的分組和過濾功能。
在以前的Visual Studio版本中,你只能把每一個偵錯器中斷點當作單獨一項來管理。單獨管理每個中斷點會很痛苦,特別是在大專案中,在你想要維護中斷點的「邏輯組」,你可以根據你正在偵錯的東西啟用或中止它們的情形下。使用VS 2010中新的「中斷點標籤」特性,你現在可以對這些中斷點「分組」命名,將它們作為一個單元來管理。
使用標籤將多個中斷點組合在一起
下面是Visual Studio 2010中中斷點視窗的一個螢幕截圖,它列出了我解決方案(是ASP.NET MVC 2程式碼庫)中所有的中斷點:
上面列表中的第一個和最後一個中斷點在控制器(Controller)實例被ASP.NET MVC 框架建立或釋放時會進入偵錯器。
使用VS 2010, 我現在可以選擇這2個中斷點,右擊,然後選擇新的「編輯標籤...」選單命令,給它們一個常見的標籤/名稱(使之方便查詢和管理):
下面是當我選擇「編輯標籤...」命令時出現的對話框。我們可以用它來為我們的中斷點建立一個新的字串標籤,或者選擇一個我們已經定義好的現成標籤。在這個情形中,我們將建立一個名為「Lifetime Management」的新標籤,描述這2個中斷點涵蓋的範圍:
當我們點擊OK按鈕時,我們的2個被選中的中斷點就被歸於新建立的「Lifetime Management」標籤之下了:
按標籤對中斷點進行過濾/排序
我們可以使用「Search (查詢)」 組合框,快速地按標籤對中斷點進行過濾和排序。在下面,我們只顯示了那些屬於「Lifetime Management」 標籤下的中斷點:
按標籤啟用或中止中斷點
我們還可以按標籤群啟用或中止中斷點。我們只要按標籤群過濾,按Ctrl-A 選擇所有的相關中斷點,然後一個點擊就可以啟用或中止所有的中斷點:
匯入/匯出中斷點
VS 2010現在支援將中斷點匯入或匯出到XML文件,然後你可以將文件傳給另一個開發人員,附加到缺陷報告中,或者只是之後重新載入到IDE中去。
如果只匯出部分中斷點,你可以用特定的標籤作過濾,然後在中斷點視窗點擊「匯出中斷點」:
在上面我將我的中斷點列表做了過濾,只匯出2個特定的中斷點(尤其是我正在找尋的一個臭蟲)。我可以將這些中斷點匯出到一個XML文件,然後將其附加到一個缺陷報告或email,允許另一個開發人員在另一台機器上輕鬆地將偵錯器配置到正確的狀態,開始調查其究竟。
被釘選的資料提示(Pinned DataTips)
Visual Studio 2010還包含一些新的「資料提示釘選」特性,允許你在偵錯器中時更好地查看和跟蹤變數和運算式的值。
只要在偵錯器中,(將滑鼠)懸浮於變數或運算式之上,顯示其資料提示(DataTip),那是個顯示其值的小工具提示(tooltip),然後點擊上面的新的「圖釘」按鈕,使資料提示不消失:
你可以在螢幕上「釘住」任意數目的資料提示。除了釘住頂層的變數外,你還可以深入變數的子屬性,將它們也釘住。
在下面,我「釘住」了三個變數: 「category」, 「Request.RawUrl」 和 「Request.LogonUserIdentity.Name」,注意後面2個變數是 「Request」對象的子屬性。
將註解與釘住的資料提示相關聯
(將滑鼠)移動於一個釘住的資料提示之上,會在偵錯器中顯示一些額外的介面:
點擊這個介面上最下面的註解按鈕,會展延該資料提示, 允許你添加相關註解:
這極度地便利了附加和跟蹤偵錯備註:
釘住的資料提示可以跨越偵錯會話(Session)和Visual Studio會話(Session)
釘住的資料提示可以跨越多個偵錯器會話來使用。這意味著如果你中止了偵錯器,做了程式碼更動,然後重新編譯,開始一個新的偵錯會話時,任何釘住的資料提示還在那裡,以及你附加的任何註解。
釘住的資料提示還可以跨越多個Visual Studio會話來使用。這意味著,如果你關閉了專案,退出了Visual Studio,之後你又將專案打開,任何釘住的資料提示還在那裡,以及你附加的任何註解。
查看上個偵錯階段中的數值(非常棒的程式碼編輯器特性)
有過多少次,你中止了偵錯器,結果又回到你的程式碼,氣惱地說,
$#@! 哎,那個變數的數值是什麼來著?
釘住的資料提示有一個很好的屬性,就是它們記住「偵錯器會話」中最後那個數值,你可以在VB/C# 程式碼器中查看這些值,即使偵錯器不在執行了。
當你在程式碼編輯器中,偵錯器不在執行時,資料提示預設是隱藏的。但在程式碼編輯器的左手的邊緣,對每一個你先前設置好的資料提示,你都可以找到一個圖釘:
將你的滑鼠移至一個釘住的資料提示之上時,會導致那個釘子顯示在螢幕上。在下面,你可以看到當我移到編輯器中第一個圖釘時,它會顯示我們上個偵錯會話中「Request」對像資料提示的值以及我們附加的相關註解:
當你在程式碼編輯模式和偵錯模式之間切換時,這可以極度的方便記錄狀態和條件。
匯入/匯出釘住的資料提示
就像我在本貼前面提到的,釘住的資料提示預設是跨越 Visual Studio 會話保存的(你不用做什麼就可以)。
VS 2010現在還支援將釘住的資料提示匯入或匯出到XML文件,然後你可以將文件傳給另一個開發人員,附加到缺陷報告中,或者只是之後重新載入到IDE中去。
連同新的中斷點匯入/匯出支援,這極大地方便了多個開發人員分享偵錯器配置,並且做跨越偵錯階段的合作。
結語
Visual Studio 2010包含了一堆很棒的新偵錯器特性,有大的,也有小的。
今天的部落格分享了偵錯器可用性方面一些很棒的改進。上面所有的特性在Visual Studio 2010專業版都有支援(其中的釘住的資料提示(Pinned DataTip)特性在免費的Visual Studio 2010 Express版中也有支援)。
在將來的部落格中,我還會討論一些「非常大的(big big)」新偵錯特性,像 Intellitrace, 平行/多執行緒偵錯,傾印檔案(dump file)分析等。
希望本文對你有所幫助,
Scott
【附註】 【除了寫部落格外,我現在還使用Twitter發短文和共享連結。請通過twitter.com/scottgu跟隨我。】