分享方式:


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 版或更新版本的程式碼。