Estoy depurando esta pieza de software para un sistema integrado STM32. En una de las funciones de mis programas que se mantenga golpear una especie de punto de interrupción:SIGTRAP a pesar de no establecer puntos de interrupción; punto de corte de hardware oculto?
SIGTRAP, Trace/trampa de punto de interrupción
Sin embargo, en el BGF, cuando lo haga info breakpoints
consigo No breakpoints or watchpoints
. El punto de interrupción en realidad corresponde a un punto de interrupción que había establecido hace bastante tiempo, en otra versión del ejecutable. Cuando establecí ese punto de interrupción, GDB me dijo automatically using a hardware breakpoint on read-only memory
(o un mensaje similar).
Creo que el punto de interrupción del hardware permanece en mi chip, a pesar de haber cargado una nueva versión del software. Si hay un punto de ruptura espurio, ¿cómo puedo localizarlo y eliminarlo?
Reiniciar la CPU. :) (hw puntos de interrupción se pueden dejar instalados, si gdb muere o si no elimina todos los puntos de interrupción existentes en la salida/reconexión). – dbrank0
Tenga en cuenta que los registros de depuración pueden persistir en algunos tipos de reinicios. Sin embargo, un reinicio completo de encendido definitivamente lo borrará. – TJD
¿Qué quiere decir con "reinicio de encendido completo"? Intenté desenchufar/volver a conectar, pero el punto de interrupción persiste. – Randomblue