You are on page 1of 5

Funciones básicas del depurador

Con frecuencia, los alumnos piensan que cuando su programa no tiene errores de compila-
ción (está correctamente escrito) entonces ya es correcto. Muchas veces esto no es así. Es
más, en la mayoría de los casos, al ejecutar el programa por primera vez se produce algún
fallo, que llamamos fallos de ejecución. A pesar de que el programa está bien escrito, no
hace lo que tenía que hacer y el resultado es incorrecto. Empieza entonces una de las tareas
más difíciles para los programadores primerizos: identificar y subsanar los errores de ejecu-
ción. Para realizar esta tarea, el depurador (debugger) es una ayuda inestimable. En esta
práctica aprenderás algunas de las funcionalidades más básicas.

Al finalizar esta práctica serás capaz de:

Ejecutar un programa paso a paso

Establecer y eliminar puntos de parada, y ejecutar un programa hasta el siguiente


punto de parada

Observar el valor de las variables de tu programa durante la ejecución

Como en prácticas anteriores, lo ideal es tener abierto en la pantalla del ordenador el docu-
mento que contiene este guión, e ir realizando en secuencia cada uno de los pasos. Es posi-
ble que debas consultar de vez en cuando el manual de Dev-C++ (en particular, la parte que
habla de la depuración.

Paso 1

Crea una carpeta en la unidad C: del ordenador, en la que trabajaras durante esta práctica.

Paso 2

Crea un proyecto a partir del siguiente código en lenguaje C (si tienes abierto este documen-
to en pantalla, te resultará cómodo hacer copy y paste).

/* Este programa calcula el mayor de cuatro numeros */


void main ()
{
int a=10, b=5, c=15, d=21;
int mayor1, mayor2, mayor;

if (a > b)
mayor1 = a;
else
mayor1 = b;

if (c > d)
mayor2 = c;
else
mayor2 = d;

if (mayor1 > mayor2)


mayor = mayor1;
else
mayor = mayor2;
}

1
Para calcular el mayor de los cuatro números, el programa calcula el mayor de los dos pri-
meros (y lo deja en mayor1) calcula el mayor de los dos siguientes (y lo deja en mayor2), y
después compara los “ganadores” para seleccionar el mayor de todos que dejará en mayor.
Observa que las variables iniciales a, b, c y d han sido inicializadas con constantes en la
propia declaración de variables.

Paso 3

Compila y monta el programa, y déjalo listo para ejecutar. Si lo ejecutas ahora no veras na-
da porque el programa no escribe nada en pantalla. Eso tiene fácil arreglo porque basta aña-
dir al final una sentencia para escribir en pantalla el valor de la variable mayor. Pero eso lo
dejamos para luego.

Paso 4

En primer lugar tienes que comprobar que está activada la opción de generar información de
depuración. Vete a Proyecto/Opciones del proyecto/Parámetros y comprueba que en la ven-
tana del compilador aparecen las opciones:

_DEBUG
D DEBUG
D _DEBUG

Si no es así, inclúyelas y pulsa Aceptar. Una vez hecho esto estamos preparados para utilizar
el depurador de Dev-C++.

Paso 5

Correr tu programa en el depurador es fácil. Simplemente ve al menú Depurar y haz clic en


Depurar (o presiona F8). Si no tienes establecida la información para poder depurar en tu
proyecto, Dev-C++ te pedirá si quieres reconstruir tu proyecto con dicha información activa-
da. En ese caso comprueba que has realizado correctamente el paso 4. Si todo está correcto,
el depurador ha cargado ahora tu programa y lo ejecuta, pero antes debes aprender a con-
trolar varios aspectos del depurador:

• Estableciendo puntos de ruptura en tu código

2
• Ejecución paso a paso de tu código

• Mostrando el valor de las variables y miembros de clases y estructuras

• Retroseguimiento

• Usando la ventana del CPU (procesador)

Paso 6: estableciendo Puntos de Ruptura en tu código

Puedes usar Puntos de Ruptura para pausar tu programa en cierta instrucción (línea de códi-
go). Para añadir un Punto de Ruptura, selecciona primero la línea de código donde quieres
parar. Ahora haz clic en el menú Depurar y luego en Añadir / Quitar Punto de Ruptura (o pul-
sando Ctrl+F5). Haciendo clic en la barra en el margen izquierdo del editor a la altura de la
línea tendrá el mismo efecto que los pasos anteriores:

Cuando cargue el depurador, si tu programa ejecuta la línea de código con el Punto de Rup-
tura, Dev-C++ te avisará que se ha llegado a la línea cambiándola el color del fondo a azul:

Ahora puedes examinar los datos en tu programa o ejecutar paso a paso tu programa.

Paso 7: ejecución paso a paso de tu programa

Una vez que se llegue a un Punto de Ruptura, puedes saltar pasos en tu programa de las dis-
tintas formas siguientes:

Siguiente Paso (o presionando F7) : El depurador dará un paso a la siguiente


instrucción (línea de código) en tu programa.

Avanzar Paso a Paso (o presionando Shit+F7) : El depurador saltará una instruc-


ción. Si esa instrucción es una llamada a una función saltará a ella.

Saltar Paso (o presionando Ctrl+F7) : El depurador continuará la ejecución del


programa hasta que haya un Punto de Ruptura o el Final del código.

3
Paso 8: Mostrando valores de variables y miembros de clases y estructuras

Depurar es interesante también por la posibilidad de mostrar el valor de las variables obser-
vadas en un determinado instante. Dev-C++ te permite ver en una conveniente manera, los
contenidos de tus clases, cadenas, estructuras/uniones, arrays y otras variables, en el Explo-
rador de Depuración de Variables, como el ejemplo mostrado en la figura:

Puedes observar tus variables (cuando se llega a un punto de ruptura) de dos formas distin-
tas:

Haciendo clic en el botón Añadir Watch (o presionando F4), y escribiendo el nom-


bre de la variable en el diálogo, y presionando Aceptar. Si seleccionas una palabra
en el código fuente y presionas F4, se añadirá la variable observada sin preguntar
por el nombre.

Apuntando con el ratón sobre una variable en tu código fuente si la opción Observar
la variable seleccionada (apuntada por el ratón) está activada en Opciones del En-
torno y se añadirá a la lista de variables observadas.

Paso 9

Haz varias ejecuciones del programa modificando los valores iniciales de las variables a, b,
c y d, y verifica, mediante una ejecución paso a paso, que el programa siempre hace el ca-
mino correcto. Ten presente que cada vez que cambies los valores iniciales de las variables
tendrás que volver a compilar y montar el programa.

Paso 10

Modifica el programa para que los valores iniciales de las variables se introduzcan por teclado
(añadiendo las sentencias scanf necesarias), y para que el resultado se escriba en pantalla
(mediante una sentencia printf). No olvides hacer el #include de la librería necesaria.

Paso 11

Ejecuta paso a paso la nueva versión del programa. Observarás que llega un momento en
que por más que pulses F7, el programa no avanza. Se ha quedado “atascado” en la primera
sentencia scanf. El programa ha abierto una ventana de DOS y está esperando a que intro-
duzcas el valor que debe leer. Localiza esa ventana e introduce el valor, y verás como el
programa avanza a la siguiente sentencia.

4
Paso 12

Pulsa F8 una vez más para entrar en modo ejecución paso a paso, y añade (con la opción
añadir watch o las alternativas vistas anteriormente) los nombres de las variables mayor1,
mayor2 y mayor (una variable en cada línea).

Puedes observar que en el caso de mayor2 aparece un valor extraño, que es el valor que tie-
ne inicialmente la variable, antes de ser inicializada (por eso no debemos usar nunca el valor
de una variable que no haya sido inicializada convenientemente).

Si prosigues ahora la ejecución paso a paso, observarás que en la ventana “Depurar” se


muestran los cambios que van produciéndose en los contenidos de las variables.

You might also like