Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Broken breakpoint (résolu)
Bonjour à tous,
Je suis bloqué dans mon dev par un problème inattendu. Le symptôme : "Broken Breakpoint".
Le point d'arrêt que j'ai placé dans mon code passe à l'état "broken" quand je lance le debug.
Quelques lignes avant c'est bon, quelques lignes après c'est bon aussi.
Si je m'arrête avant et que je fais du pas à pas, le code en question semble être totalement ignoré.
Si je lance une exécution en mode "production", le code semble être ignoré également.
Une idée sur ce qui pourrait rendre une partie du code inopérante ?
Merci.
Je suis bloqué dans mon dev par un problème inattendu. Le symptôme : "Broken Breakpoint".
Le point d'arrêt que j'ai placé dans mon code passe à l'état "broken" quand je lance le debug.
Quelques lignes avant c'est bon, quelques lignes après c'est bon aussi.
Si je m'arrête avant et que je fais du pas à pas, le code en question semble être totalement ignoré.
Si je lance une exécution en mode "production", le code semble être ignoré également.
Une idée sur ce qui pourrait rendre une partie du code inopérante ?
Merci.
Modifié en dernier par pucpood le ven. 7 févr. 2025 08:17, modifié 1 fois.
Broken breakpoint
- paulfjujo
Maître- Messages : 3050
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
Hors context de debugging :
un oubli de parentheses dans l'appel d'une fonction
=> pas d'erreur de compil. , pas de blocage du programme ,
mais NON execution de la fonction appelée
il faudrait verifier dans le resultat de compilation asm ou lst
le contenu de la partie bloquante et des registres MCU utilisés...aussi par debug
Hors context de debugging :
un oubli de parentheses dans l'appel d'une fonction
=> pas d'erreur de compil. , pas de blocage du programme ,
mais NON execution de la fonction appelée
il faudrait verifier dans le resultat de compilation asm ou lst
le contenu de la partie bloquante et des registres MCU utilisés...aussi par debug
Broken breakpoint
Merci de ta réponse rapide @paulfjujo.
Je crois avoir mis le doigt là où ça fait mal, un truc tout bête :
où BTRxFrame est un tableau de char.
Bien qu'il y eu bien 0xFF dans BTRxFrame[2], il devait être considéré à -1 en tant que type signé et le '0xFF' à 255, donc différent. Du coup, il n'entrait pas dans le 'if'.
Un cast (unsigned char) a arrangé le problème. Toutefois, je vais re-balayer toutes les utilisations de ce tableau car il n'a pas de raison d'être signé.
En espérant que ça pourra servir à quelqu'un.
Je crois avoir mis le doigt là où ça fait mal, un truc tout bête :
Code : Tout sélectionner
if( BTRxFrame[2] == 0xFF )
où BTRxFrame est un tableau de char.
Bien qu'il y eu bien 0xFF dans BTRxFrame[2], il devait être considéré à -1 en tant que type signé et le '0xFF' à 255, donc différent. Du coup, il n'entrait pas dans le 'if'.
Un cast (unsigned char) a arrangé le problème. Toutefois, je vais re-balayer toutes les utilisations de ce tableau car il n'a pas de raison d'être signé.
En espérant que ça pourra servir à quelqu'un.
Broken breakpoint
Broken breakpoint
ohayo91 a écrit :Bonjour,
Une petite astuce toute simple pour les points d'arrêts.
Il suffit d'ajouter dans le code la pseudo instruction C "NOP();" ou "Nop();" suivant le compilateur XC utilisé.
Cette pseudo instruction est compilée comme un NOP assembleur
a+
Exact, j'en fais un usage immodéré, c'est bien utile quand-il y a des petits décalage entre le PC et l'affichage (ça m'arrive souvent malgré les "Clean & rebuild"). 2 ou 3 Nop() avant l'endroit voulu, le point d'arrêt sur le 1er Nop et on est sûr de ne pas dépasser !
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités