Actualmente me estoy enfrentando a uno de los errores más perversos que he enfrentado en un proyecto grande y complejo en el que mi equipo está trabajando. Estamos utilizando C++ como lenguaje de programación, y actualmente Visual Studio para desarrollo, aunque el producto final está destinado a ejecutarse multiplataforma.Describiendo y encontrando un error que corrompe el estado que causa fallas aparentemente aleatorias
El error:
Hay un error en nuestro sistema que provoca accidentes en puntos aparentemente aleatorios de ejecución. Las causas de bloqueo generalmente son violaciones de acceso de lectura de direcciones que cambian cada vez que se ejecuta el programa. A veces obtenemos errores de corrupción de montón también. Las pilas de llamadas nos llevan a puntos variables en nuestra base de código, y raramente a algunas bibliotecas externas (Lua en nuestro caso), donde el error claramente no miente.
Parece que este error se ha estado desarrollando durante los últimos 4 meses. Esa cantidad de tiempo atrás, más o menos, algunos de los miembros de mi equipo vieron cómo el programa frontend fallaba en maneras y ubicaciones muy similares a lo que sucede ahora.
Algunos detalles más:
Nuestro código base es aproximadamente 800K líneas de C++ puro (excluidos los comentarios) grande, y se desarrolló a lo largo de 3 años. El proyecto actual pesa aproximadamente 300K. Hemos utilizado pruebas unitarias excesivas y otras formas de eliminar errores antes de que sucedan, como afirmaciones, punteros inteligentes, etc.
Los otros y yo hemos estado tratando de encontrar este error (s) por más de 2 semanas. Se está convirtiendo en algo más que una pesadilla para mí. En un proyecto tan complejo, incluso la buena depuración del viejo archivo de impresión parece fallar debido a la complejidad que ahora tiene.
Mis preguntas
¿Qué tipo de error nos enfrentamos aquí? ¿Hay incluso un nombre para esto? ¿Este tipo de error ocurre más o menos a menudo en otros proyectos grandes?
¿Qué podemos hacer para encontrarlo y eliminarlo después de haber pasado 2 semanas de depuración infructuosa usando varias utilidades, en varias plataformas y con varias configuraciones de compilación?
(Mi pregunta anterior estaba cerrado, así que estoy tratando de formular mejor y con más detalles en esta ocasión, enlace: https://stackoverflow.com/questions/7154645/how-is-this-kind-of-bug-called)
Arf, los errores esporádicos son los peores. Es hora de aprender a usar herramientas de depuración. –