5.    Depuración de algoritmos

Las herramientas de depuración se utilizan para detectar la/s sentencia/s en donde se han producido errores en el diseño de un algoritmo. La tarea de depuración consiste básicamente en explorar el algoritmo, ejecutándolo paso a paso y comparando en todo momento los valores que van tomando las distintas variables con los valores esperados. Es necesario, por tanto, haber analizado con anterioridad algunos casos de prueba que permitan anticipar en todo momento los valores que deben tomar las variables y saber si la progresión del algoritmo es correcta o no.

Normalmente la depuración se realizará ante la presencia de errores de ejecución o lógicos, ya que los de sintaxis suelen ir acompañados de algún tipo de mensaje que facilita su localización.

Los botones relacionados con la depuración son los siguientes (acercando el ratón a cada uno de ellos puedes ver la etiqueta con el nombre que le asocia DFD:):

 

5.1    PASO SIMPLE

Permite ir ejecutando el algoritmo sentencia a sentencia. Combinado con la ventana de evaluación de variables permite ir viendo los valores que toman estas. A cada pulsación del botón, el flujo del algoritmo avanza una sentencia. El símbolo de la sentencia que se va a ejecutar en cada momento es destacado en color azul.

En cualquier momento puede pararse la ejecución paso a paso pulsando el botón DETENER:

 

Ejercicio

Ejecutar paso a paso el algoritmo de resta de dos matrices.

 

5.2    EJECUTAR HASTA

Esta opción es útil cuando se sabe con certeza que una parte del algoritmo está correctamente diseñada y por tanto, la ejecución paso a paso de dicha parte no es necesaria (además de poder ser bastante tediosa).

El botón EJECUTAR HASTA permite establecer un PUNTO DE RUPTURA en las sentencias del algoritmo, de modo que el programa se ejecutará con normalidad hasta dicho punto, y a partir de ahí puede realizarse alguna de las siguientes posibilidades:

·       evaluar variables

·       retomarse la ejecución normal

·       seguir paso a paso

·       establecer un punto de ruptura en una sentencia posterior del algoritmo y continuar hasta él

El punto de ruptura debe establecerse con anterioridad, seleccionando (clic) la sentencia donde se quiere fijar éste, y seguidamente pulsando el botón EJECUTAR HASTA. En el momento que la ejecución alcance el punto de ruptura, el algoritmo se detendrá, y la sentencia correspondiente queda marcada en color azul.

Ejercicio

Establecer un punto de ruptura en la primera sentencia ejecutable del algoritmo de resta de dos matrices, y continuar paso a paso a partir de ahí.

 

5.3    DEPURADOR

Abre una ventana donde se pueden escribir los nombres de las variables (o expresiones en general) cuyo valor se desea explorar durante la depuración del algoritmo. Se utilizará en combinación con cualquiera de los dos métodos de depuración anteriores, para valorar si las variables toman valores correctos o no.

Al pulsar el botón correspondiente se abre una ventana en la que se van a visualizar las variables o expresiones que interese evaluar.

 

 

Cuadro de texto:

Dichas expresiones se introducen en el cuadro de texto que aparece pulsando la tecla INSERTAR, cuando la ventana del depurador está activada (si no lo estuviera, basta con hacer clic en cualquier punto de ella para activarla).

Si se desea eliminar alguna de las expresiones, basta con marcarla con el ratón (clic) y pulsar la tecla SUPRIMIR. Esto puede resultar útil, ya que una vez insertada una variable en la ventana del depurador

En una sesión de depuración, normalmente se tendrá visible la ventana del depurador, con el objeto de ir comparando en todo momento los valores que toman las variables. Cuando una variable no ha sido inicializada, se mostrará el mensaje "Variable no existe", que cambiará al valor correspondiente una vez ejecutada la sentencia que le asigna un valor (sentencia de asignación o sentencia de entrada). La siguiente figura ilustra esta situación:

Cuadro de texto:

 

 

 

Puede verse en la parte izquierda cómo la sentencia que inicializa las variables no se ha ejecutado aún (señalada en azul), y por tanto las variables no toman valores conocidos. Una vez ejecutada, las variables toman los valores esperados.

5.4    Depuración de errores en DFD. Sesión de ejemplo.

En primer lugar, copiaremos el fichero numeroprimo.dfd. El algoritmo presenta un error lógico, como podéis comprobar ejecutándolo para algunos casos (2, 4, 15, ...).

Para detectar dicho error realizaremos una ejecución hasta el lazo mientras, ya que no parece probable que el error esté en las primeras sentencias del programa.

Por tanto, fijamos el punto de ruptura en dicha sentencia, seleccionándola y pulsando el botón EJECUTAR HASTA. A partir de aquí, el proceso evoluciona de la siguiente manera:

 

Acción

Consecuencia

Resultado

Se nos pide el número. Introducimos el valor 6:

 

La ejecución alcanza el punto de ruptura

+INS

Abrimos una ventana del depurador para evaluar las variables definidas hasta el momento. En este momento, todas ellas toman valores correctos

A partir de aquí seguimos paso a paso. La siguiente instrucción es el mientras, que se debe verificar.

Se cumple la condición, ya que 2 es divisor de 6. Por tanto, ya sabemos que el número NO es primo, y divisor debe incrementarse y pasar a valer 1.

Se alcanza el final de la estructura de selección, y la variable divisor sigue valiendo cero. ¡Aquí hay un error!

Detenemos la ejecución paso a paso para editar la asignación errónea y corregirla.

 

 

Una vez corregido el error, probamos nuevamente el algoritmo con los casos de prueba anteriores, verificando que funciona correctamente.