Points d’arrêt non résolus (points d’arrêt bu)
Si un point d’arrêt est défini pour un nom de routine qui n’a pas été chargé, le point d’arrêt est appelé un point d’arrêt reporté, virtuel ou non résolu. (Ces termes sont interchangeables). Les points d’arrêt non résolus ne sont associés à aucune charge spécifique d’un module. Chaque fois qu’une nouvelle application est chargée, le nom de cette routine est vérifié. Si cette routine apparaît, le débogueur calcule l’adresse actuelle du code du point d’arrêt virtuel et active ce dernier.
Si vous définissez un point d’arrêt à l’aide de la commande bu , le point d’arrêt est automatiquement considéré comme non résolu. Si ce point d’arrêt se trouve dans un module chargé, le point d’arrêt est toujours activé et fonctionne normalement. Toutefois, si le module est déchargé et rechargé ultérieurement, ce point d’arrêt ne disparaît pas. En revanche, un point d’arrêt que vous définissez avec bp est immédiatement résolu en une adresse.
Il existe trois principales différences entre les points d’arrêt bp et les points d’arrêt bu :
Un emplacement de point d’arrêt bp est toujours converti en adresse. Si un changement de module déplace le code sur lequel un point d’arrêt bp a été défini, le point d’arrêt demeure à la même adresse. En revanche, un point d’arrêt bu demeure associé à la valeur symbolique (généralement un symbole plus un décalage) qui a été utilisé, et il suit cet emplacement symbolique même si son adresse change.
Si une adresse de point d’arrêt bp est trouvée dans un module chargé et si ce module est déchargé ultérieurement, le point d’arrêt est supprimé de la liste des points d’arrêt. En revanche, les points d’arrêt bu persistent après des déchargements et des chargements répétés.
Les points d’arrêt que vous définissez avec bp ne sont pas enregistrés dans les espaces de travail WinDbg. Les points d’arrêt définis avec bu sont enregistrés dans les espaces de travail.
Contrôle des points d’arrêt d’adresse et des points d’arrêt non résolus
Les points d’arrêt d’adresse peuvent être créés avec la commande bp (Définir un point d’arrêt) ou la commande bm (Définir un point d’arrêt symbole) lorsque le commutateur /d est inclus. On peut créer des points d’arrêt non résolus avec la commande bu (Définir un point d’arrêt non résolu) ou la commande bm lorsque le commutateur /d n’est pas inclus. Les commandes qui désactivent, activent et modifient des points d’arrêt s’appliquent à tous les types de points d’arrêt. Les commandes qui affichent une liste de points d’arrêt incluent tous les points d’arrêt et indiquent le type de chacun d’eux. Pour obtenir la liste de ces commandes, consultez les Méthodes de contrôle des points d’arrêt.
La boîte de dialogue Points d’arrêt WinDbg affiche tous les points d’arrêt, indiquant les points d’arrêt non résolus par un « u ». Cette boîte de dialogue permet de modifier n’importe quel point d’arrêt. La zone de texte Commande de cette boîte de dialogue peut être utilisée pour créer n’importe quel type de point d’arrêt ; si le type est omis, un point d’arrêt non résolu est créé. Pour en savoir plus, consultez Modification | Points d’arrêt. Lorsque vous définissez un point d’arrêt à l’aide de la souris dans la fenêtre Désassembleur ou dans la fenêtre Source de WinDgb, le débogueur crée un point d’arrêt non résolu.