Pseudovariablen im Visual Studio-Debugger

Pseudovariablen sind Begriffe, mit denen bestimmte Informationen in einem Variablenfenster oder im Dialogfeld Schnellüberwachung angezeigt werden. Eine Pseudovariable können Sie genauso wie eine normale Variable eingeben. Pseudovariablen sind jedoch keine Variablen und es gibt keine entsprechenden Variablennamen im Programm.

Beispiel

Angenommen, Sie schreiben eine Anwendung in nativem Code, und Sie möchten die Anzahl zugeordneter Handles der Anwendung anzeigen. Im Fenster Überwachen können Sie in der Spalte Name die folgende Pseudovariable eingeben und zur Auswertung anschließend die EINGABETASTE drücken:

$handles

Die in dieser Tabelle angezeigten Pseudovariablen können Sie in nativem Code verwenden:

Pseudovariable Funktion
$err Es wird der letzten Fehlerwert angezeigt, der mit der Funktion "SetLastError" festgelegt wird. Der angezeigte Wert stellt das Ergebnis der Rückgabe der Funktion "GetLastError" dar.

Verwenden Sie $err,hr, um die dekodierte Form dieses Werts anzuzeigen. Wenn der letzte Fehler z. B. 3 wäre, würde $err,hrERROR_PATH_NOT_FOUND : The system cannot find the path specified. anzeigen.
$handles Zeigt die Anzahl von Handles an, die der Anwendung zugeordnet sind.
$vframe Zeigt die Adresse des aktuellen Stapelrahmens an.
$tid Zeigt die Thread-ID für den aktuellen Thread an.
$env Zeigt den Umgebungsblock im Zeichenfolgen-Viewer an.
$cmdline Zeigt die Befehlszeilenzeichenfolge an, mit der das Programm gestartet wurde.
$pid Zeigt die Prozess-ID an.
$registername

oder

@registername
Zeigt den Inhalt des Registers Registername an.

Normalerweise geben Sie zum Anzeigen des Registerinhalts einfach den Registernamen ein. Nur beim Überladen eines Variablennamens durch einen Registernamen müssen Sie diese Syntax verwenden. Wenn der Registername im aktuellen Gültigkeitsbereich dem Variablennamen entspricht, interpretiert der Debugger den Namen als Variablenname. In diesem Fall sind $Registername bzw. @Registername praktisch.
$clk Zeigt die Zeit in Taktzyklen an.
$user Zeigt eine Struktur mit Kontoinformationen für das die Anwendung ausführende Konto an. Aus Sicherheitsgründen werden die Kennwortinformationen nicht angezeigt.
$exceptionstack Zeigt die Stapelüberwachung der aktuellen Windows-Runtime-Ausnahme an. $ exceptionstack funktioniert nur in UWP-Apps. $ exceptionstack wird nicht für C++- und SEH-Ausnahmen unterstützt.
$returnvalue Zeigt den Rückgabewert einer Methode an.

Die in dieser Tabelle angezeigten Pseudovariablen können Sie in C# verwenden:

Pseudovariable Funktion
$exception Zeigt Informationen über die letzte Ausnahme an. Wenn keine Ausnahme aufgetreten ist, wird beim Auswerten von $exception eine Fehlermeldung angezeigt.

Bei deaktiviertem Ausnahmen-Assistenten wird dem Fenster Lokal beim Auftreten einer Ausnahme automatisch $exception hinzugefügt.
$user Zeigt eine Struktur mit Kontoinformationen für das die Anwendung ausführende Konto an. Aus Sicherheitsgründen werden die Kennwortinformationen nicht angezeigt.
$returnvalue Zeigt den Rückgabewert einer .NET-Methode an.
$threadSmallObjectHeapBytes Zeigt die Gesamtanzahl der Bytes an, die zum kleinen Objektheap durch den aktuellen Thread zugewiesen sind. (.NET 6 und höher)
$threadUserOldHeapBytes Zeigt die Gesamtanzahl der Bytes an, die zum alten Heap durch den aktuellen Thread zugewiesen sind. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6 und höher)

Die in dieser Tabelle angezeigten Pseudovariablen können Sie in Visual Basic verwenden:

Pseudovariable Funktion
$exception Zeigt Informationen über die letzte Ausnahme an. Wenn keine Ausnahme aufgetreten ist, wird beim Auswerten von $exception eine Fehlermeldung angezeigt.
$delete oder $$delete Löscht eine implizite Variable, die im Fenster Direkt erstellt wurde. Die Syntax lautet $delete,Variable oder $delete,Variable.
$objectids oder $listobjectids Zeigt alle aktiven Objekt-IDs als untergeordnete Elemente des angegebenen Ausdrucks an. Die Syntax lautet $objectid,Ausdruck oder $listobjectids,Ausdruck.
$N# Zeigt das Objekt mit der Objekt-ID N an.
$dynamic Zeigt den besonderen Knoten Dynamische Ansicht für ein Objekt an, das IDynamicMetaObjectProvider implementiert. Schnittstelle Die Syntax lautet $dynamic,Objekt. Diese Funktion gilt nur für Code, der .NET Framework Version 4 oder höher verwendet.