c++ - ¿Puedo tener gdb break en lectura/escritura desde una dirección?
debugging (1)
Sí.
Utilizando Watchpoints :
reloj : solo se interrumpe en escritura (y solo si el valor cambia)
rwatch - descansa en lectura, y
awatch - rompe en lectura / escritura.
Un resumen más detallado de algunas fuentes de internet:
reloj
watch es la forma de gdb de establecer puntos de interrupción de datos que detendrán la ejecución de un programa si la memoria cambia en la ubicación especificada.
Los puntos de interrupción del reloj se pueden establecer en el nombre de la variable o en cualquier ubicación de la dirección.
watch my_variable
watch *0x12345678
where 0x12345678 is a valid address.
rwatch
Los puntos de interrupción de rwatch (lectura-lectura) interrumpen la ejecución del código cuando el programa intenta leer desde una ubicación de memoria o variable.
rwatch iWasAccessed
rwatch *0x12345678
where 0x12345678 is a valid address.
un reloj
Los registros de vigilancia o de acceso interrumpen la ejecución del programa si se escribe o se lee una variable o ubicación de memoria. En resumen, los relojes de pulsera son relojes y relojes de pulsera, todo en uno. Es una forma práctica de crear un punto de interrupción que dos puntos separados.
awatch *0x12345678
where 0x12345678 is a valid address.
Posible duplicado:
¿Puedo establecer un punto de interrupción en ''acceso de memoria'' en GDB?
Tengo una ubicación específica en la memoria que se está corrompiendo y me gustaría poder ver exactamente cuando las cosas escriben en esa ubicación. ¿Hay alguna forma en que pueda hacer que gdb rompa el acceso de memoria a esa dirección en particular?