Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les éléments de syntaxe suivants peuvent être utilisés lors de la création d’un point d’arrêt, via la fenêtre Commande du débogueur ou 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 rubriques de commandes 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__MyMethodDans 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 nouveau).
Une technique plus polyvalente consiste à utiliser la syntaxe @"chars". Il s’agit d’un échappement spécial 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 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 de l’évaluateur MASM). Cette syntaxe concerne exclusivement les noms, et non les paramètres. Les modèles et les surcharges sont les principales sources de symboles qui nécessitent cette notation de guillemets. Vous pouvez également définir la commande bu en utilisant la syntaxe @!"chars", comme l’illustre 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) au lieu de 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 de 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 identifiants de point d’arrêt n'ont pas besoin d'être explicitement mentionnés. Au lieu de cela, vous pouvez utiliser une expression numérique qui donne un chiffre entier correspondant à un identifiant 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 requis, et Expression représente toute expression numérique qui se résout en entier qui correspond à un ID de point d’arrêt.
Cette syntaxe permet aux scripts du débogueur de sélectionner par programme 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 Pseudo-Register Syntaxe.
Résolution incertaine du point d'arrêt
Dans la version 10.0.25310.1001 et ultérieure du moteur de débogage, la résolution des points d’arrêt ambigus 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 se résout à plusieurs emplacements. Pour plus d’informations, consultez Résolution ambiguë du point d’arrêt.