Visual Studio 偵錯工具中的虛擬變數
虛擬變數是在變數視窗或 [快速監看式] 對話方塊中,用來顯示特定資訊的詞彙。 輸入虛擬變數的方式與輸入一般變數相同。 但虛擬變數並不是變數,而且不會對應至您程式中的變數名稱。
範例
假設您在編寫機器碼應用程式,並且想要查看配置在應用程式中的控點數目。 您可以在 [監看式] 視窗的 [名稱] 欄中,輸入下列虛擬變數,然後按 [傳回] 來進行評估:
$handles
在機器碼中,您可以使用下表中顯示的虛擬變數:
虛擬變數 | 函式 |
---|---|
$err |
顯示以 SetLastError 函式設定的最後錯誤值。 所顯示的值代表 GetLastError 函式會傳回的內容。 請使用 $err,hr 來查看此值的解碼表單。 例如,如果最後錯誤是 3,則 $err,hr 會顯示 ERROR_PATH_NOT_FOUND : The system cannot find the path specified. |
$handles |
顯示配置在您的應用程式中的控點數目。 |
$vframe |
顯示目前堆疊框架的位址。 |
$tid |
顯示目前執行緒的執行緒 ID。 |
$env |
顯示字串檢視器中的環境區塊。 |
$cmdline |
顯示啟動程式的命令列字串。 |
$pid |
顯示處理序識別碼。 |
$ registername或 @ registername |
顯示註冊 registername 的內容。 通常只要輸入註冊名稱,即可顯示註冊內容。 您唯一需要使用此語法的時機,就是當註冊名稱多載變數名稱時。 如果註冊名稱與目前範圍內的變數名稱相同,偵錯工具會將該名稱解譯為變數名稱。 這就是 $ registername 或 @ registername 派上用場的時候。 |
$clk |
以時脈週期顯示時間。 |
$user |
針對執行應用程式的帳戶,顯示含有帳戶資訊的結構。 為安全起見,不會顯示密碼資訊。 |
$exceptionstack |
顯示目前 Windows 執行階段例外狀況的堆疊追蹤。 $ exceptionstack 僅適用於 UWP 應用程式。 針對 C++ 和 SEH 例外狀況,不支援 $ exceptionstack |
$returnvalue |
顯示方法的傳回值。 |
在 C# 中,您可以使用下表中所示的虛擬變數:
虛擬變數 | 函式 |
---|---|
$exception |
顯示最後例外狀況的資訊。 如果沒有發生例外狀況,評估 $exception 會顯示錯誤訊息。當例外狀況助理停用時, $exception 會在發生例外狀況時自動新增至 [區域變數] 視窗。 |
$user |
針對執行應用程式的帳戶,顯示含有帳戶資訊的結構。 為安全起見,不會顯示密碼資訊。 |
$returnvalue |
顯示 .NET 方法的傳回值。 |
$threadSmallObjectHeapBytes |
顯示目前執行緒在小物件堆中分配的總位元組數。 (.NET 6+) |
$threadUserOldHeapBytes |
顯示目前執行緒在使用者舊堆中分配的總位元組數。 User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+) |
在 Visual Basic 中,您可以使用下表中顯示的虛擬變數:
虛擬變數 | 函式 |
---|---|
$exception |
顯示最後例外狀況的資訊。 如果沒有發生例外狀況,評估 $exception 會顯示錯誤訊息。 |
$delete 或 $$delete |
刪除在 [立即] 視窗中建立的隱含變數。 語法為 $delete, variable 或 $delete, variable. |
$objectids 或 $listobjectids |
將所有作用中物件 ID 顯示為指定運算式的子項。 語法為 $objectid, expression 或 $listobjectids, expression. |
$ N # |
顯示物件識別碼等於 N 的物件。 |
$dynamic |
針對實作 IDynamicMetaObjectProvider 的物件,顯示特殊 [動態檢視] 節點。 介面。 語法為 $dynamic, object。 此功能僅適用於使用 .NET Framework 第 4 版或更新版本的程式碼。 |