Aquí hay algunos consejos muy generales para la depuración.
- Conozca a su depurador . Si no es un IDE, aprenda cómo señalarlo a los archivos de origen y la información de compilación necesaria para realizar la depuración a nivel de origen. Cree un programa muy simple que llame a una rutina ubicada en un segundo archivo fuente. Asegúrese de que puede establecer puntos de interrupción y aprenda a usar los comandos principales. Asegúrese de conocer la diferencia entre ‘entrar’ y ‘pasar’.
- Programa con depuración en mente . En otras palabras,
- Considere tener valores intermedios para expresiones complejas.
- Si es apropiado para su idioma, separe la creación de objetos y la inicialización de objetos.
- Tenga cuidado al usar plantillas, macros y otras construcciones que generan automáticamente código relativamente opaco.
- Conozca la diferencia entre las versiones optimizadas y de depuración de la ejecución del código, si existen en su idioma. Considere incluir declaraciones de código de solo depuración para el código que solo aparece en la compilación de depuración. Por ejemplo, en C ++ usarías #ifdef _DEBUG.
- Agregue el registro a su programa. Use ‘niveles de registro’ que puede configurar con una variable estática para aumentar y disminuir la cantidad de información registrada para la solución de problemas.
- Para cualquier generador pseudoaleatorio utilizado, guarde las semillas para poder codificarlas en forma rígida si necesita reproducir un resultado particular.
- Aprenda a establecer puntos de interrupción condicionales . Como su nombre lo indica, los puntos de interrupción condicionales solo se activan cuando se establece una condición. Por ejemplo, en un bucle de 1 a 10,000, si sé que hay un problema en la iteración 7143, puedo establecer un punto de interrupción condicional para la primera declaración del bucle cuando el iterador es igual a 7143. Es más lento que la ejecución normal, pero aún así un ENORME ahorro de tiempo, comparado con golpear ‘go’ 7143 veces.
- Aprende la depuración remota . Muchos depuradores le permiten conectarse de manera remota a un proceso, incluso en otra máquina, y depurarlo. Esto es invaluable para depurar aplicaciones de pantalla completa y sensibles al enfoque.
- Si su IDE soporta la depuración, ¡apréndalo ! Si puede compilar y depurar dentro de su IDE, ya tiene todas las herramientas de búsqueda de fuentes a las que está acostumbrado. Es una gran manera de ir Si puede descubrir cómo hacer esto con menos de una semana de esfuerzo, debería hacerlo.
Hay toneladas más, pero esto es suficiente para empezar. Algunos trucos que me han funcionado bien en el pasado:
- Búsqueda binaria . Si tiene un código y simplemente no puede encontrar el origen de un bloqueo o corrupción, comente la mitad del código sospechoso y vea si se repite. Cuando encuentre la mitad en la que sucede, comente la mitad de esa mitad, y así sucesivamente, hasta que la aísle en una pequeña parte del código. Esto funciona para problemas de compilación extraños también.
- Imprimiendo Nunca subestime el poder de imprimir en un código difícil de depurar. Si no puede imprimir en una consola, escriba en un archivo. lo ideal sería hacer esto con una API DebugLog.
- Seguimiento del estado . Agregue instrumentación para las variables importantes relacionadas con su problema que vuelca sus valores. Ver la progresión de estos valores variables puede ayudarlo a localizar dónde hay un error lógico o aritmético.