Je débogue ce logiciel pour un système embarqué STM32. Dans l'une des fonctions mes programmes arrète pas de taper une sorte de point d'arrêt:SIGTRAP malgré aucun point d'arrêt défini; point d'arrêt matériel caché?
SIGTRAP, Trace/piège breakpoint
Cependant, GDB, quand je fais info breakpoints
je reçois No breakpoints or watchpoints
. Le point d'arrêt correspond en fait à un point d'arrêt que j'avais défini il y a un certain temps, dans une autre version de l'exécutable. Lorsque j'ai défini ce point d'arrêt, GDB m'a dit automatically using a hardware breakpoint on read-only memory
(ou un message similaire).
Je pense que le point de rupture matériel reste sur ma puce, malgré le chargement d'une nouvelle version du logiciel. S'il y a effectivement un point d'arrêt parasite, comment puis-je le localiser et l'enlever?
Réinitialiser la CPU. :) (les points d'arrêt hw peuvent être laissés installés, si gdb meurt ou s'il ne supprime pas tous les points d'arrêt existants à la sortie/reconnexion). – dbrank0
Notez que les registres de débogage peuvent persister dans certains types de réinitialisations. Une réinitialisation à la mise sous tension complète l'effacera définitivement. – TJD
Qu'entendez-vous par "réinitialisation à pleine puissance"? J'ai essayé de débrancher/rebrancher, mais le point d'arrêt persiste. – Randomblue