Visual Studio デバッガーの擬似変数
擬似変数は、変数ウィンドウまたは [クイック ウォッチ] ダイアログ ボックスに特定の情報を表示するときに使用される用語です。 通常の変数を入力するときと同様に、擬似変数を入力できます。 ただし、擬似変数は変数ではなく、プログラム内の変数名に対応しません。
例
たとえば、ネイティブ コード アプリケーションを記述していて、アプリケーションに割り当てられたハンドル数を確認する場合を考えてみます。 [ウォッチ] ウィンドウで、[名前] 列に次の擬似変数を入力し、Enter キーを押すと、擬似変数が評価されます。
$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 |
プロセス ID を表示します。 |
$ registernameまたは @ registername |
registername レジスタの内容を表示します。 通常は、レジスタ名を入力するだけでレジスタの内容を表示できます。 この構文を使用する必要があるのは、レジスタ名で変数名をオーバーロードしている場合だけです。 レジスタ名が現在のスコープ内での変数名と同じであると、デバッガーは、その名前を変数名と解釈します。 このようなときには、 $ registername や @ registername が便利です。 |
$clk |
クロック周期の時間を表示します。 |
$user |
アプリケーションを実行しているアカウントのアカウント情報と共に、構造体を表示します。 セキュリティ上の理由から、パスワード情報は表示されません。 |
$exceptionstack |
現在の Windows ランタイムの例外のスタック トレースを表示します。 $ exceptionstack は UWP アプリでのみ機能します。 $ exceptionstack は、C++ および SEH の例外ではサポートされません |
$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 と等しいオブジェクト ID を持つオブジェクトを表示します。 |
$dynamic |
IDynamicMetaObjectProvider を実装するオブジェクト用の特別な [動的ビュー] ノードを表示します。 インターフェイス。 構文は $dynamic, object です。 この機能は、.NET Framework Version 4 以降を使用するコードにのみ適用されます。 |