Les points d'arrêt sont l'une des fonctionnalités les plus intéressantes prises en charge par les débogueurs les plus populaires tels que GDB. Mais comment fonctionne un point d'arrêt? Quelles modifications de code le compilateur fait-il pour atteindre le point d'arrêt? Existe-t-il des fonctionnalités matérielles spéciales utilisées pour prendre en charge les points d'arrêt?
Le compilateur n'a pas besoin de "modifier" le binaire de quelque manière que ce soit pour prendre en charge les points d'arrêt. Cependant, il est important que:
Le reste du travail est ensuite effectué par le débogueur lui-même.
Pour mettre un point d'arrêt en premier, nous devons ajouter des informations spéciales dans le binaire. Nous utilisons l'indicateur -g lors de la compilation des fichiers source c pour inclure cette information. Le débogueur de logiciel utilise en fait cette information pour mettre des points d'arrêt. pour le support du point de rupture matériel est dans VxWorks comme je l'ai expérimenté. Fondamentalement, au point de rupture, le processeur s'arrête.Ainsi, en interne, toute étape qui donnera une exception au processeur peut être utilisée pour mettre un point de rupture logiciel.Tandis qu'un point de rupture matériel fonctionne en faisant correspondre l'adresse stockée dans les registres matériels pour provoquer une exception. Le point de rupture matériel est très puissant mais il dépend fortement de l'architecture.
Une très bonne explication est ici Quelle est la différence entre les points d'arrêt matériels et logiciels? Une bonne introduction avec des informations relatives au processeur est donnée ici http://processors.wiki.ti.com/index .php/How_Do_Breakpoints_Work