Partager via


Pseudovariables dans le débogueur Visual Studio

Les pseudovariables sont des termes utilisés pour afficher certaines informations dans une fenêtre variable ou dans la boîte de dialogue QuickWatch . Vous pouvez entrer un pseudovariable de la même façon que vous entreriez une variable normale. Les pseudovariables ne sont pas des variables, mais ne correspondent pas aux noms de variables dans votre programme.

Example

Supposons que vous écrivez une application de code natif et que vous souhaitez voir le nombre de handles alloués dans votre application. Dans la fenêtre Espion , vous pouvez entrer le pseudovariable suivant dans la colonne Name , puis appuyer sur Retour pour l’évaluer :

$handles

Dans le code natif, vous pouvez utiliser les pseudovariables présentés dans le tableau suivant :

Pseudovariable Fonction
$err Affiche la dernière valeur d’erreur définie avec la fonction SetLastError. La valeur affichée représente ce qui serait retourné par la fonction GetLastError.

Permet $err,hr de voir la forme décodée de cette valeur. Par exemple, si la dernière erreur était 3, l’affichage $err,hr serait ERROR_PATH_NOT_FOUND : The system cannot find the path specified.
$handles Affiche le nombre de handles alloués dans votre application.
$vframe Affiche l’adresse du frame de pile actuel.
$tid Affiche l’ID de thread du thread actuel.
$env Affiche le bloc d’environnement dans la visionneuse de chaînes.
$cmdline Affiche la chaîne de ligne de commande qui a lancé le programme.
$pid Affiche l’ID de processus.
$ registername

ou

@ registername
Affiche le contenu du registre registername.

Normalement, vous pouvez afficher le contenu de l’inscription uniquement en entrant le nom du registre. La seule fois où vous devez utiliser cette syntaxe, c’est quand le nom du registre surcharge un nom de variable. Si le nom du registre est identique à un nom de variable dans l’étendue actuelle, le débogueur interprète le nom comme un nom de variable. C’est quand $registername ou @registername est pratique.
$clk Affiche l’heure dans les cycles d’horloge.
$user Affiche une structure avec des informations de compte pour le compte exécutant l’application. Pour des raisons de sécurité, les informations de mot de passe ne s’affichent pas.
$exceptionstack Affiche la trace de pile de l’exception Windows Runtime actuelle. $ exceptionstack fonctionne uniquement dans les applications UWP. $ exceptionstack n’est pas pris en charge pour les exceptions C++ et SEH
$returnvalue Affiche la valeur de retour d’une méthode.

En C#, vous pouvez utiliser les pseudovariables indiqués dans le tableau suivant :

Pseudovariable Fonction
$exception Affiche des informations sur la dernière exception. Si aucune exception n’a eu lieu, l’évaluation $exception affiche un message d’erreur.

Lorsque l’Assistant Exception est désactivé, $exception est automatiquement ajouté à la fenêtre Locals lorsqu’une exception se produit.
$user Affiche une structure avec des informations de compte pour le compte exécutant l’application. Pour des raisons de sécurité, les informations de mot de passe ne s’affichent pas.
$returnvalue Affiche la valeur de retour d’une méthode .NET.
$threadSmallObjectHeapBytes Affiche le nombre total d’octets alloués dans le tas de petits objets par le thread actuel. (.NET 6+)
$threadUserOldHeapBytes Affiche le nombre total d’octets alloués dans le tas utilisateur ancien par le thread actuel. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+)

Dans Visual Basic, vous pouvez utiliser les pseudovariables présentés dans le tableau suivant :

Pseudovariable Fonction
$exception Affiche des informations sur la dernière exception. Si aucune exception n’a eu lieu, l’évaluation $exception affiche un message d’erreur.
$delete ou $$delete Supprime une variable implicite créée dans la fenêtre Immédiate. La syntaxe est $delete,variable ou$delete,variable.
$objectids ou $listobjectids Affiche tous les ID d’objet actifs en tant qu’enfants de l’expression spécifiée. La syntaxe est $objectid, ou$listobjectids,.
$ N# Affiche l’objet avec l’ID d’objet égal à N.
$dynamic Affiche le nœud d’affichage dynamique spécial pour un objet qui implémente le IDynamicMetaObjectProvider. Interface. La syntaxe est $dynamic,. Cette fonctionnalité s’applique uniquement au code qui utilise .NET Framework version 4 ou ultérieure.