He estado trabajando durante las últimas semanas tratando de rastrear un error realmente difícil que bloquea mi aplicación. En primer lugar, la aplicación se bloqueaba en la asignación de una cadena estándar, y luego durante la libre de una variable local.Complemento para valgrind?
Después de una cuidadosa inspección del código, no había ninguna razón para que fallara en estas ubicaciones; sin embargo, siempre se bloqueaba al intentar liberar un puntero no válido (es decir, un puntero que apuntaba a la memoria no válida). Y no tengo idea de por qué este puntero no apuntaba a la ubicación correcta.
Sospecho que el problema tiene que ver con un problema de corrupción de memoria o problema de corrupción de puntero de algún tipo. El problema es que no puedo rastrearlo visualmente ... todavía. No tengo idea de dónde empezar a buscar en el código, y hay miles de líneas de código por recorrer, por lo que no parece un enfoque realista del problema.
Así que en Valgrind viene ...
Una herramienta que he dependido de un tiempo muchos problemas para encontrar dentro del código que puede conducir a un accidente de este tipo. Sin embargo, ¡esta vez ha surgido con las manos vacías! No veo ningún error en valgrind cuando ocurre el problema y, por tanto, la razón por la que hago esta pregunta.
¿Existen otras aplicaciones que puedan complementar valgrind y ayudar a encontrar problemas en el código que puedan causar un bloqueo mencionado anteriormente?
¡Gracias!
usted podría intentar publicar un ejemplo de código mínima, compilables que reproduce el problema. Estoy dispuesto a apostar que el acto de intentar escribir una muestra de código de este tipo te hará obvio el problema. Si no, estamos más que felices de ayudar. –
¿Desea ver dónde se bloquea el código (es decir, una muestra de dónde se bloquea)? porque no hay ninguna razón para que se bloquee allí como mencioné, pero no me importa publicarlo – bbazso