jueves, 1 de noviembre de 2012

Técnicas de Depuración de Programas

Cuando se escriben programas, es normal cometer errores (bugs). De hecho, en promedio, un programador comete un error cada 10 líneas de programa. Esto significa que la probabilidad de que el programa funcione a la primera vez es prácticamente nula.
Por lo tanto, el desarrollo de un programa siempre incorpora una etapa de depuración (debugging), que consiste en buscar y resolver los errores cometidos durante la programación. Para facilitar la etapa de depuración es conveniente usar herramientas especializadas para estos efectos. La más común es el depurador o también llamado debugger.
El depurador:
Un depurador es una herramienta que permite intervenir durante la ejecución de un programa, para saber cómo se está ejecutando. El depurador permite:

  • Ejecutar paso a paso un programa (stepping).
  • Establecer puntos de detención (breakpoints).
  • Examinar el contenido de las variables y objetos.
  • Conocer el encadenamiento de llamadas de procedimientos.
  • Retomar la ejecución hasta un nuevo punto de detención.
En este curso usaremos el depurador que trae incorporado JBuilder.Depuración manual:
Cuando no se dispone de un depurador, se debe recurrir a la depuración manual. Esta consiste en preparar el programa para poder conocer como se está ejecutando el programa. La técnica más usual de depuración de programas consiste en colocar println's en puntos estratégicos del programa para desplegar el contenido de las variables. Siga las siguientes recomendaciones para establecer estos puntos estratégicos:

  • Dentro de un while, siempre coloque algún println que permita detectar cuando cayó en un ciclo infinito su programa (un loop). Despliegue el valor de contadores, datos leídos de un archivo, acumuladores, etc.
  • Al inicio de una función o procedimiento, despliegue el valor de los parámetros recibidos y al retornar despliegue el valor retornado (mediante return).
  • En un if, despliegue cuál de las ramas se tomó: la que corresponde a la condición verdadera o el else.
Para que resulte más fácil la depuración, comience ejecutando su programa con poquísimos datos. Nunca olvide, incluir datos que representen las condiciones de borde del programa. Por ejemplo: n=0, el archivo esta vacío, etc.La biblioteca del curso incluye mecanismos para poder grabar todos los mensajes que aparecen en la pantalla. Para hacer esto, utilice la opción -l al ejecutar su programa:

    java Run -l MiPrograma
Su programa se ejecutará igual que antes, pero además creará un archivo de nombre console.log que contiene todos los mensajes que aparecieron en pantalla durante la ejecución del programa. Esto resulta muy útil, pues las 24 líneas de la pantalla se hacen escasas con tanto despliegue con println. Cuando Ud. estime que su programa funciona adecuadamente, comente los println que introdujo para efectos de depuración (es decir agregue // para transformalos en comentarios). No los borre, porque más tarde podría darse cuenta que su programa todavía no funciona completamente cómo debería.

Fuente: http://users.dcc.uchile.cl/~lmateu/CC10A/Apuntes/debug/index.html

No hay comentarios:

Publicar un comentario

Deja tu comentario: