Estoy usando Boehm GC y valgrind.
Pero parece que valgrind no puede detectar el desbordamiento en los búferes GC_malloc'ed.
¿Alguien conoce alguna herramienta que pueda detectar el desbordamiento de búfer para Boehm GC?
Nuestra herramienta CheckPointer puede hacer lo que usted quiera.
No dijiste específicamente cómo falló Valgrind, solo que lo hizo. Se sabe que valgrind no puede detectar ciertos tipos de errores de acceso a la memoria. Ciertamente, no puede detectar desbordamientos de búfer para un búfer dentro de una estructura o un búfer asignado en el espacio de la pila local, porque no tiene conocimiento del tamaño de esos búfer. El área alrededor del búfer es, por definición, un espacio de datos válido y, por lo tanto, los accesos son "válidos" desde el punto de vista de valgrind, incluso si está fuera del borde del búfer.
Por el contrario, CheckPointer lee su código fuente C y recopila información sobre los tipos de datos (y, por lo tanto, sus tamaños). Esto le da la información clave necesaria para hacer esa detección. Después de recopilar la información de tipo, instrumenta el código para detectar errores en el acceso a la memoria. Detectará los errores anteriores y una amplia variedad de otros.
CheckPointer actualmente solo está disponible para C.
Este es un producto de mi empresa, así que no lo tome como una recomendación. Simplemente estoy documentando que existe y aparentemente coincide con sus requisitos.
Si define GC_DEBUG antes #include "gc.h"
, realiza algunas comprobaciones, una vez por colección, comprueba los objetos conocidos para ver si parecen martillados o no. Pienso...
referencias:
https://stackoverflow.com/q/4532825/32453
https://github.com/ivmai/bdwgc/blob/master/tests/smash.c
https://github.com/ivmai/bdwgc "instalaciones de depuración"
steve barnes
Mawg dice que reincorpore a Monica
Tomás Weller
rogerdpack