Visual C++ 2010 Express

Introducción a la depuración con Visual C++

 

 

En ocasiones, nuestros programas no harán lo que deben y será necesario analizar paso a paso lo que ocurre, con el fin de intentar detectar dónde se encuentran los errores.

Durante la depuración podemos hacer que el programa se ejecute paso a paso y ver los valores que toman las variables. Veamos cómo.

Crea un nuevo proyecto (Archivo >>> Nuevo >>> Proyecto) vacío (nombre: prueba; ubicación: Tema1). Añade un nuevo elemento (botón derecho sobre Archivos de código fuente y Agregar >>> Nuevo elemento) de tipo Archivo C++ (.cpp).

Copia el siguiente programa y pégalo en el archivo creado:

#include <iostream>
using namespace std;

int main()
{
   double numerador, denominador, resultado;
   cout << "Numerador: "; cin >> numerador;
   cout << "Denominador: "; cin >> denominador;
   resultado = numerador * denominador;
   cout << "Resultado: " << resultado << endl;

   return 0;
}

VC++ hace un análisis sintáctico sobre la marcha, de forma que si hay algún error nos lo indicará subrayando en rojo el elemento donde detecta el error. Por ejemplo, quita el ; final detrás de cin >> denominador. El siguiente identificador, resultado, aparecerá subrayado y si ponemos el puntero del ratón sobre esa palabra nos avisa de que falta el ;.

Vuelve a poner el ;. Guarda todo. Genera la solución (Depurar >>> Generar solución). Ya tenemos el programa listo para ser ejecutado.

Vamos a ejecutarlo paso a paso. Selecciona Depurar >>> Paso a paso por instrucciones (o la tecla F11). La ejecución del programa comenzará, abriéndose la ventana de consola, pero se detendrá antes de cada instrucción. Sabremos cuál es la siguiente que se ejecutará porque aparece una flecha amarilla a la izquierda:

Ahora está al principio de la función main(). Si pulsamos la tecla F11 para ejecutar la siguiente instrucción, veremos que la flecha pasa a apuntar a la primera instrucción cout << ... Se ejecutará a continuación el código de esa línea. Las declaraciones se pasan por alto, ya que no figuran como instrucciones en el código objeto. Sirven, durante la compilación, para determinar las necesidades de memoria y comprobar posibles errores tipológicos en el uso de las variables y constantes.

Si volvemos a pulsar F11, la ejecución pasará al código del operador << de cout, que se encuentra en la biblioteca iostream. Como confiamos plenamente en las bibliotecas del sistema, no necesitamos analizar la ejecución de sus códigos. En estos casos debemos seleccionar Depurar >>> Paso a paso por procedimientos (o pulsar F10). Esto hace que las funciones y operadores se ejecuten de una vez, sin entrar en su código concreto.

Si has pulsado ya F11 y has llegado al código de la biblioteca iostream, cierra esa ficha y selecciona Depurar >>> Detener depuración. Volverás al estado inicial.

Pulsa F10 hasta que le llegue el turno de ejecutarse a la instrucción cout << ... Se activará la ventana de consola, al ejecutarse las instrucciones de esa línea, que incluye la lectura del valor del numerador. Introduce un valor para el numerador. El indicador de ejecución (flecha amarilla) pasará a la siguiente línea y aparecerá abajo el panel de datos, en el que podemos ver los valores de las variables (y otro panel que muestra la pila de llamadas):

Puedes ver el valor que ha tomado la variable numerador tras ejecutarse la instrucción de lectura (está en rojo). También puedes ver los valores que tienen denominador y resultado: un valor que había aleatoriamente en sus celdas de memoria. Puedes comprobar que C++ no inicializa las variables a cero.

Sigue ejecutando el programa paso a paso pulsando F10 hasta que termine. Observa los valores que van tomando las variables. Inspeccionando las variables podemos comprobar si el programa realiza los cálculos adecuadamente o si usamos una variable no inicializada, por ejemplo. O, en este caso, comprobar que la variable resultado no contiene el resultado de la división, sino su multiplicación. Un error lógico del programa.

Ya te iremos contando más cosas de VC++ a medida que las vayamos necesitando.

Y si quieres más ayuda sobre VC++, puede acudir a los recursos de aprendizaje de Microsoft para VC++:

Pulsa aquí para ir a la página de Microsoft con recursos de aprendizaje para VC++