Syntaxe de symbole et correspondance de symboles
Les symboles vous permettent de manipuler directement les jetons utilisés par le programme débogué. Par exemple, vous pouvez définir un point d’arrêt au niveau de la fonction main 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. Cette option est prise en charge pour la plupart des paramètres numériques et est également prise 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 (pour instance, 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’un point 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 fondue est lue par la commande dt (Type d’affichage) en tant qu’adresse, sauf si elle est précédée d’un point d’exclamation ou si l’option -n est utilisée. Toutefois, pour spécifier qu’un symbole est local, faites-le précéder d’un signe dollar ( $ ) et d’un point d’exclamation ( ! ), comme dans $ !lime.
Les noms de symboles ne respectent pas la casse. Cela signifie que la présence d’un myInt et d’un 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 mise en majuscule.
Syntaxe de symbole dans les expressions numériques
Le débogueur comprend deux types d’expressions différents : les expressions Microsoft Macro Assembleur (MASM) 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 à quoi 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 de toute autre étiquette reconnue.
Dans les expressions C++, chaque symbole est interprété en fonction de son type. Selon ce à quoi 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 la façon d’utiliser 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 en tant que symbole.
La commande ss (Définir le suffixe du 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 peut pas trouver autrement.
De nombreuses routines Win32 existent dans les versions ASCII et Unicode. Ces routines ont souvent un « A » ou « W » ajouté à la fin de leur nom, 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 de symbole 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 Syntaxe générique de chaîne . En plus des 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 de début. Lorsque vous faites correspondre ce paramètre à un symbole, le débogueur le traite comme toute quantité de traits de soulignement, même zéro.
Le suffixe de symbole n’est pas utilisé lors de la correspondance de symboles dans des expressions texte.