Partager via


Syntaxe des symboles et correspondance des symboles

Les symboles vous permettent de manipuler directement des jetons utilisés par le programme en cours de débogage. Par exemple, vous pouvez définir un point d’arrêt au niveau de la fonction principale avec la commande bp main, ou afficher la variable entière MyInt avec la commande dd MyInt L1.

Dans de nombreux cas, les symboles peuvent être utilisés comme paramètres dans les commandes du débogueur. Cela est pris en charge pour la plupart des paramètres numériques et est également pris en charge dans certains paramètres de texte. En plus des règles générales pour la syntaxe des symboles, il existe également des règles de syntaxe de symbole qui s’appliquent dans chacun de ces cas.

Règles générales de syntaxe des symboles

Un nom de symbole se compose d’un ou plusieurs caractères, mais commence toujours par une lettre, un trait de soulignement (_), un point d’interrogation ( ?) ou un signe dollar ($).

Un nom de symbole peut être qualifié par un nom de module. Un point d’exclamation ( !) sépare le nom du module du symbole (par exemple, mymodule !main). Si aucun nom de module n’est utilisé, le symbole peut toujours être précédé d’un point d’exclamation. L’utilisation d’une marque d’exclamation sans nom de module peut être particulièrement utile, même pour les variables locales, pour indiquer à une commande de débogueur qu’un paramètre est un nom et non un nombre hexadécimal. Par exemple, la variable fade sera lue par la commande dt (Type d’affichage) en tant qu’adresse, sauf si elle est précédée par un point d’exclamation ou que l’option -n est utilisée. Toutefois, pour spécifier qu’un symbole est local, précédez-le avec un signe dollar ( $ ) et un point d’exclamation ( ! ), comme en $ !lime.

Les noms de symboles sont entièrement insensibles à la casse. Cela signifie que la présence d’une myInt et d’une myInt dans votre programme ne sera pas correctement comprise par les débogueurs ; toute commande qui fait référence à l’une de ces commandes peut accéder à l’autre, quelle que soit la façon dont la commande est capitalisée.

Syntaxe des symboles dans les expressions numériques

Le débogueur comprend deux types d’expressions différents : les expressions MASM (Microsoft Macro Assembleur) et les expressions C++. En ce qui concerne les symboles, ces deux formes de syntaxe diffèrent comme suit :

  • Dans les expressions MASM, chaque symbole est interprété comme une adresse. Selon ce que le symbole fait référence, il s’agit de l’adresse d’une variable globale, d’une variable locale, d’une fonction, d’un segment, d’un module ou d’une autre étiquette reconnue.

  • Dans les expressions C++, chaque symbole est interprété en fonction de son type. Selon ce que le symbole fait référence, il peut être interprété comme un entier, une structure de données, un pointeur de fonction ou tout autre type de données. Un symbole qui ne correspond pas à un type de données C++ (tel qu’un nom de module non modifié) entraîne une erreur de syntaxe.

Pour obtenir une explication du moment et de l’utilisation de chaque type de syntaxe, consultez Évaluation des expressions.

Si vous utilisez la syntaxe d’expression MASM, tout symbole pouvant être interprété comme un nombre hexadécimal ou comme un registre (par exemple , BadFeed, ebX) doit toujours être précédé d’un point d’exclamation. Cela permet de s’assurer que le débogueur le reconnaît comme un symbole.

La commande ss (Définir le suffixe de symbole) peut être utilisée pour définir le suffixe de symbole. Cela indique au débogueur d’ajouter automatiquement « A » ou « W » à un nom de symbole qu’il ne trouve pas dans le cas contraire.

De nombreuses routines Win32 existent dans les versions ASCII et Unicode. Ces routines ont souvent un « A » ou « W » ajouté à la fin de leurs noms, respectivement. L’utilisation d’un suffixe de symbole aide le débogueur lors de la recherche de ces symboles.

La correspondance de suffixe n’est pas active par défaut.

Syntaxe des symboles dans les expressions de texte

Les symboles peuvent être utilisés dans les paramètres de texte de certaines commandes : par exemple, bm (Définir le point d’arrêt) et x (Examiner les symboles).

Ces paramètres de texte prennent en charge divers caractères génériques et spécificateurs. Pour plus d’informations, consultez la syntaxe de caractère générique de chaîne . Outre les caractères génériques de chaîne standard, une expression de texte utilisée pour spécifier un symbole peut être précédée d’un trait de soulignement principal. Lors de la mise en correspondance avec un symbole, le débogueur considère cela comme n'importe quelle quantité de traits de soulignement, y compris zéro.

Le suffixe de symbole n’est pas utilisé lors de la correspondance de symboles dans les expressions de texte.