Sto eseguendo il debug di questo software per un sistema embedded STM32. In una delle funzioni miei programmi continua a colpire una sorta di punto di interruzione:SIGTRAP nonostante non siano stati impostati punti di interruzione; punto di rottura hardware nascosto?
SIGTRAP, Trace/breakpoint trappola
Tuttavia, in GDB, quando faccio info breakpoints
ricevo No breakpoints or watchpoints
. Il punto di interruzione corrisponde in realtà a un punto di interruzione che avevo impostato molto tempo fa, in un'altra versione dell'eseguibile. Quando ho impostato quel punto di interruzione, GDB mi ha detto automatically using a hardware breakpoint on read-only memory
(o un messaggio simile).
Penso che il punto di interruzione hardware rimanga sul mio chip, nonostante abbia caricato una nuova versione del software. Se esiste effettivamente un punto di interruzione spuria, come posso individuarlo e rimuoverlo?
resettare la CPU. :) (i punti di interruzione hw possono essere lasciati installati, se gdb muore o se non cancella tutti i breakpoint esistenti in uscita/riconnessione). – dbrank0
Si noti che i registri di debug possono persistere tra alcuni tipi di reimpostazione. Tuttavia, un reset completo all'accensione lo cancellerà definitivamente. – TJD
Cosa intendi per "reset completo all'accensione"? Ho provato a scollegare/ricollegare, ma il punto di interruzione persiste. – Randomblue