偵錯工具檢視應用程式範例
更新:2007 年 11 月
這個範例會示範 Microsoft Visual Studio 2005 中的一項新功能,這項功能可以變更在偵錯視窗中檢視類別的方式。您可以藉由將 DebuggerDisplayAttribute 之類的新屬性 (Attribute) 套用至類別及其成員,來控制型別的值、型別和名稱欄位在 [區域變數] 偵錯視窗中顯示的方式,也可以控制在檢視時,是否要顯示、隱藏或展開上述欄位。這個範例目前只能在 Microsoft Visual C# 2005 中使用。
如需使用這些範例的詳細資訊,請參閱下列主題:
這個範例包括三個含有偵錯工具屬性之類別的原始程式檔 (Source File),以及三個不含偵錯工具屬性的原始程式檔,如下表所示:
包含偵錯工具屬性的檔案 |
不含偵錯工具屬性的檔案 |
---|---|
DebugAddress.cs |
NonDebugAddress.cs |
DebugCustomer.cs |
NonDebugCustomer.cs |
DebugCustomerName.cs |
NonDebugCustomerName.cs |
DebuggerViewsExample.cs 檔包含主控台應用程式的進入點 (Entry Point),兩組檔案都會使用。取消註解偵錯版本 (DebugAddress.cs、DebugCustomer.cs 和 DebugCustomerName.cs) 中的程式碼,以執行範例。
若要使用命令提示字元建置範例
開啟 [命令提示字元] 視窗,並巡覽至 DebuggerViewsCS 目錄的 \CS 子目錄。如需必要設定和 SDK 命令提示字元的詳細資訊,請參閱 HOW TO:設定範例設定。
在命令列中輸入 msbuild DebuggerViewsCS.sln。
注意事項: 這個範例示範 Visual Studio 的功能。您必須在 Visual Studio 偵錯環境中啟動及執行,才能檢視其輸出。
若要使用 Visual Studio 建置範例
開啟 [Windows 檔案總管],並巡覽至 DebuggerViewsCS 目錄的 \ CS 子目錄。
按兩下 DebuggerViewsCS.sln,在 Visual Studio 2005 中開啟檔案。
在 [建置] 功能表上,按一下 [建置方案]。
若要執行範例
在 Visual Studio 的 [檢視] 功能表上,按一下 [方案總管]。
在 [方案總管] 視窗中按兩下 DebuggerViewsExample.cs,在 Visual Studio 2005 中開啟檔案。
在 [專案] 功能表上,按一下 [顯示所有檔案]。
在 GetCustomers 方法產生 Customer 型別之變數的那行程式碼中插入中斷點 (按 F9),如以下所示:
Customer c = new Customer(cn, Address.GetAddressById(customerAddresses, cn.Id));
按 F5,以便在 Visual Studio 2005 偵錯環境中啟動並執行範例應用程式。
當應用程式於中斷點中斷時,請按 F10 到下一行程式碼。
展開內含應用程式屬性、集合及其他物件的階層架構,觀察 [區域變數] 視窗中目前的值。若要顯示 [區域變數] 視窗,請按一下 [偵錯] 功能表中的 [視窗],再按 [區域變數]。
在 [偵錯] 功能表上按一下 [停止偵錯],按 Shift+F5 或按一下 [偵錯] 工具列的圖示,停止執行程式碼。
將三個檔案中,名稱以 Debug 開頭的程式碼取消註解。接著將三個名稱以 NonDebug 開頭之檔案中的程式碼標記為註解,或者在 [方案總管] 視窗中選取這三個檔案、在上面按一下滑鼠右鍵,然後再按 [從專案移除]。
在 [偵錯] 功能表上,選擇 [啟動] 以相同的中斷點設定。當應用程式中斷時,觀察 [區域變數] 視窗中值資料行的細節,此時應該會有由偵錯屬性提供的其他資訊。
備註
為了提供使用偵錯屬性的範例,DebugCustomer.cs 檔會包含 CustomerName 類別的下列 DebuggerDisplay 屬性:
[DebuggerDisplay("{(FirstName == null) ? \"\":FirstName} {LastName} ==> (Customer ID = {Id})")]
進行偵錯時,這個屬性會在 [區域變數] 視窗中顯示以下的值。名稱 cn 是 CustomerName 物件的執行個體。
名稱 |
值 |
類型 |
---|---|---|
cn |
"Sally" "HighBridge" ==> (Customer ID = 12345) |
Microsoft.Samples.CustomerName |
如果沒有這個屬性,[區域變數] 視窗中會顯示以下的值:
名稱 |
值 |
類型 |
---|---|---|
cn |
{Microsoft.Samples.CustomerName} |
Microsoft.Samples.CustomerName |