Syntaxe du point d’arrêt
Les éléments de syntaxe suivants peuvent être utilisés lors de la création d’un point d’arrêt, soit via la fenêtre Commande du débogueur, soit via l’interface graphique WinDbg.
Adresses dans les points d’arrêt
Les points d’arrêt prennent en charge de nombreux types de syntaxe d’adresse, notamment les adresses virtuelles, les décalages de fonction et les numéros de ligne source. Par exemple, vous pouvez utiliser l’une des commandes suivantes pour définir des points d’arrêt :
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
Pour plus d’informations sur cette syntaxe, consultez Syntaxe d’expression numérique, Syntaxe de ligne source et les rubriques de commande individuelles.
Points d’arrêt sur les méthodes
Si vous souhaitez placer un point d’arrêt sur la méthode MyMethod dans la classe MyClass , vous pouvez utiliser deux syntaxes différentes :
Dans la syntaxe d’expression MASM, vous pouvez indiquer une méthode par deux-points ou par un trait de soulignement double.
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethod
Dans la syntaxe d’expression C++, vous devez indiquer une méthode par deux-points.
0:000> bp @@( MyClass::MyMethod )
Si vous souhaitez utiliser une commande de point d’arrêt plus complexe, vous devez utiliser la syntaxe d’expression MASM. Pour plus d’informations sur la syntaxe des expressions, consultez Évaluation des expressions.
Points d’arrêt utilisant des expressions MASM complexes
Pour définir un point d’arrêt sur des fonctions complexes, y compris les fonctions qui contiennent des espaces, ainsi qu’un membre d’une classe publique C++, placez l’expression entre parenthèses. Par exemple, utilisez bp ( ?? MyPublic) ou bp (opérateur new).
Une technique plus polyvalente consiste à utiliser le @ ! » syntaxe chars ». Il s’agit d’une échappement spéciale dans l’évaluateur MASM qui vous permet de fournir du texte arbitraire pour la résolution de symboles. Vous devez commencer par les trois symboles @ ! » et se terminer par un guillemet (« ). Sans cette syntaxe, vous ne pouvez pas utiliser d’espaces, de crochets d’angle (<, >) ou d’autres caractères spéciaux dans les noms de symboles dans l’évaluateur MASM. Cette syntaxe est exclusivement destinée aux noms, et non aux paramètres. Les modèles et les surcharges sont les principales sources de symboles qui nécessitent cette notation entre guillemets. Vous pouvez également définir la commande bu à l’aide de @ ! » syntaxe chars », comme le montre l’exemple de code suivant.
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
Dans cet exemple, ExecutableName est le nom d’un fichier exécutable.
Cette syntaxe d’échappement est plus utile pour C++ (par exemple, les opérateurs surchargés) que pour C, car il n’y a pas d’espaces (ou de caractères spéciaux) dans les noms de fonctions C. Toutefois, cette syntaxe est également importante pour un grand nombre de code managé en raison de l’utilisation considérable des surcharges dans le .NET Framework.
Pour définir un point d’arrêt sur du texte arbitraire dans la syntaxe C++, utilisez bu @@c++(text) pour les symboles compatibles C++.
Points d’arrêt dans les scripts
Les ID de point d’arrêt n’ont pas besoin d’être référencés explicitement. Au lieu de cela, vous pouvez utiliser une expression numérique qui se résout en entier qui correspond à un ID de point d’arrêt. Pour indiquer que l’expression doit être interprétée comme un point d’arrêt, utilisez la syntaxe suivante.
b?[Expression]
Dans cette syntaxe, les crochets sont obligatoires, et Expression signifie toute expression numérique qui est résolue en entier qui correspond à un ID de point d’arrêt.
Cette syntaxe permet aux scripts de débogueur de sélectionner par programmation un point d’arrêt. Dans l’exemple suivant, le point d’arrêt change en fonction de la valeur d’un pseudo-registre défini par l’utilisateur.
b?[@$t0]
Pseudo-registres de point d’arrêt
Si vous souhaitez faire référence à une adresse de point d’arrêt dans une expression, vous pouvez utiliser un pseudo-registre avec la syntaxe $bpNombre , où Number est l’ID de point d’arrêt. Pour plus d’informations sur cette syntaxe, consultez syntaxe Pseudo-Register.
Résolution ambiguë des points d’arrêt
Dans les versions 10.0.25310.1001 et ultérieures du moteur de débogueur, la résolution ambiguë des points d’arrêt est désormais prise en charge. Les points d’arrêt ambigus permettent au débogueur de définir des points d’arrêt dans certains scénarios où une expression de point d’arrêt est résolue à plusieurs emplacements. Pour plus d’informations, consultez Résolution ambiguë des points d’arrêt.
Voir aussi
Utilisation des points d’arrêt