Consejos para la Depuración

Comentario Personal:
Cuando uno estudia y aprende a programar en cualquier lenguaje sin ayuda de un material debidamente estructurado y sin ayuda de algún mentor, es normal que en ocasiones se utilice un código extenso o poco limpio debido a la falta de conocimiento de técnicas o metodologías bien estudiadas y desarrolladas.
Pero es importante el buscar y desarrollar sistemas limpios, que optimicen el código y den un resultado mas limpio y profesional.
Al leer este libro de C++ eh descubierto muchos aciertos y errores que mi camino de desarrollador me han dejado, y muchas técnicas y soluciones simples que de haber conocido antes, habrían resuelto muchos de los problemas a los cuales eh enfrentado con anterioridad de manera mucho mas sencilla y cómoda, como lo es el tema de esta ocasión.
Por lo cual invito a cualquier persona que se encuentre en una situación similar, que el programar haya surgido de un gusto nato, y no contase con algún estudio debido del tema, a leer materiales técnicos y de gran valor que den un sentido profesional y bases fuertes para este hobby xP... Digo yo puee xP

Consejos para la depuración.

En ocasiones no contaremos con un buen depurador de nuestro lado que haga al programa trasparente y poder descubrir errores de manera fácil y rápida. O puede que se trabaje con sistemas embebidos (empotrados) donde no hay depuradores y exista una retroalimentación muy limitada, como un led o pantalla lcd de 1 o 2 lineas.

A continuación se explicaran algunas buenas sugerencias para esto.

Banderas para la depuración.

En ocasiones tendremos que agregar código que nos ayudara en el proceso de depuración, y luego este código sera un estorbo (en memoria o en lectura) y sera borrado, después surgirá de nuevo algún error y volverá  teniendo esto en un ciclo vicioso y estorboso en tiempo en agregar y quitar este código.
Una solución a esto es utilizar algunas banderas que permitan separa el código de depuración y activarlo o desactivarlo, y para esto tenemos 2 opciones.


  • Banderas de pre-procesador.
Usando el pre-procesador para definir (#define) una o mas banderas de depuración puede así separa el código de depuración con las sentencias #ifdef y #endif. Condicionando el código de depuración a una bandera de pre-procesador.
Cuando crea que la depuración ah terminado utilice #undef con esa bandera y el código quedara eliminado automáticamente (con esto reducirá el tamaño y sobrecarga del ejecutable).
"Las banderas de pre-procesador tradicionalmente se distinguen de las variables porque se escriben todas en mayúscula".

#define DEBUG
.......
#ifdef DEBUG
//Codigo de depuración....
....
#endif //end of debugging

  • Banderas en Tiempo Real.


En ocasiones es mas conveniente utilizar banderas en tiempo de ejecución que puedan modificarse sin la necesidad de re-compilar el código (esto es esencialmente importante en sistemas muy grandes, que nos permitirán ahorrar todo el proceso de compilación).
Para esto se utilizan banderas booleanas.

bool debug = false;
....
if(debug){
     //codigo ....
}

En ocasiones también puede ser conveniente que la bandera de depuración se active como un argumento de inicio de la aplicación (--debung=on), permitiendo así activar los programas en este modo cuando sean requeridos.


Salutaciones Finales xP
Esta misma técnica del pre-procesador puede ser muy útil (y es utilizada) para la habilitación y negación de bloques de código en la compilación, permitiendo activar módulos de sistemas muy grandes, o dejarlos fuera para ciertas empaquetados o para la prueba en partes del mismo :)

0 comentarios: