Original article: http://www.hermetic.ch/cfunlib/debug.htm

El uso de Depurador en Visual C++

el artículo hecho por Peter Meyer

Cuándo utilizar el Depurador

Depuración es el nombre dado al proceso de eliminación de errores encontradas en programas de computadora. Esto nunca se puede completar totalmente, porque "siempre hay un último error". Sin embargo, es posible eliminar todos los errores excepto el último. Para hacer esto el uso de un depurador será de mucha utilidad. Este es un programa diseñado para permitirle recorrer las instrucciones de otro programa y examinar el estado del programa en cada paso.

La depuración comienza tan pronto como se pregunta por qué su programa no está produciendo los resultados que desea. Lo primero que debe hacer es asegurarse de que su código C / C ++ compile y enlace sin errores. Si se produce algún mensaje de error su código se debe modificar para que no se produzca.

El segundo que necesitamos hacer es examinar su código y comparar los resultados previstos con lo que usted consigue realmente. A veces sucede, sin embargo, que un examen minucioso del código no se revela ningún tipo de error. A continuación, puede insertar algún código de depuración. Esto puede consistir en asertar declaraciones para asegurarse de que las variables tengan los valores esperados en ciertos puntos de su programa (por ejemplo, assert (n> 0)). Si las afirmaciones fallan el programa se detiene mostrando un mensaje de error.

El código de depuración también puede consistir en instrucciones para imprimir (utilizando printf o cout) los valores de ciertas variables en algunos lugares de su código para proporcionarle información sobre lo que está sucediendo cuando el programa se está ejecutando. Si esto todavía no arroja ninguna luz sobre el error, entonces ya es hora de encender el depurador.

Qué puede hacer el Depurador

        Pasar a través del programa de una declaración a la vez, ya sea "más" o "en" funciones.

        Ejecutar el programa hasta un cierto punto (ya sea al cursor o un punto de interrupción) y luego detener.

        Mostrar los valores (o el contenido) de las variables en cada punto durante la ejecución del programa.


Cómo utilizar el Depurador de Visual C++

Esto se aplica a la versión 5.00 del compilador de Microsoft Visual C ++.

El depurador en versiones anteriores o posteriores puede ser diferente en algunos aspectos.

Para usar el depurador en el ambiente de programación de Visual C ++ debe haber compilado y enlazado su programa utilizando la configuración "Debug" (y no la configuración "Release"). La configuración se establece a través de las opciones de menú Build | Set Active Configuration. Esta es la configuración predeterminada, entonces no es necesario configurarla a menos que previamente haya cambiado la configuración a "Release".

Por lo general, no es útil pasar por las declaraciones en un programa que comienza con la primera declaración en main (). Es mejor tener el programa funcionado hasta que consiga a esa parte de su código donde usted piensa que el fallo se reside. Hay dos formas de indicar al depurador que se ejecute hasta este punto. Puede localizar el cursor en ese lugar en su código y presione Ctrl-F10 (o utilice Build | Start Debug | Run to Cursor). El programa será ejecutado por el depurador y si todo va bien se detendrá en el lugar en el código seleccionado, y se abrirán las ventanas del depurador. Por supuesto, es posible que el programa termine antes de que se alcance su lugar de parada. En ese caso, elija un lugar anterior en el programa.

La segunda manera como se puede decir al depurador que ejecute el lugar en el código que desea inspeccionar es establecer un "breakpoint" allí. Para establecer un punto de interrupción, coloque el cursor en el lugar deseado y presione F9 (o utilice Right-mouse-button/ Insert/Remove Breakpoint). Si se ha establecido un punto de interrupción, puede quitarlo colocando el cursor junto a él y presionando F9. (Los puntos de interrupción también se pueden desactivar con F9 o con el Right-mouse-button | Disable Breakpoint.) Una vez que haya establecido un punto de interrupción, presione F5 (o utilice Build | Start Debug | Go) para hacer que el depurador ejecute el programa y detenga en el punto de interrupción, con lo que las ventanas del depurador se abren (si no están ya abiertas).

Las ventanas en la parte inferior a la izquierda e inferior a la derecha de la pantalla guardan nombres y valores de variables. Los que están de la ventana izquierda incluyen variables locales a la función que se está ejecutando. Los que están de la ventana derecha son variables especificadas por el usuario. Para especificar una variable, haga clic en la parte izquierda de la primera línea vacía y, a continuación, escriba el nombre de la variable. Después de pulsar Enter, se mostrará el valor de esa variable (si tiene un valor). A continuación, puede ver cómo las variables mostradas cambian de valor a medida que se continúa la ejecución del programa.

Al presionar F1, aparecerá la Ayuda contextual. Por ejemplo, nos indica la diferencia entre las variables "Auto" y las variables "Locales":

La pestaña Auto muestra información sobre las variables utilizadas en la declaración actual y la anterior.

La pestaña Locales muestra información sobre las variables que son locales a la función actual.

Para ver el valor de una variable sin tener que escribir el nombre, coloque el cursor en algún lugar dentro del nombre de la variable y presione Shift-F9 (o Depurar | QuickWatch).

Se puede seguir la ejecución del programa de varias maneras. El más simple es presionar F10 (o Depurar | Step Over) para ejecutar la siguiente instrucción (indicada por la pequeña flecha amarilla en el margen izquierdo de la ventana de código). Al presionar F10 repetidamente se pasa por sucesivas declaraciones de programa. Asista a la información dada en las ventanas inferiores. Por ejemplo, si está en una declaración

if ( ( j = atoi(buffer) ) >= 2000 )

(Que convierte la cadena en el búfer en un entero, coloca el valor en la variable j y compara esto con 2000) y después de presionar F10 se le informará del valor devuelto por atoi ().

Si está en una llamada de función, entonces presionando F10 hace que esa función se ejecute y cuando el depurador devuelve el control esto le significa que está en la siguiente declaración. En una llamada de función puede presionar F11 (o Depurar | Step Into) para entrar en esa función (si el código para esa función se compiló en el modo de "Depuración"). A continuación, puede utilizar F10 para pasar a través de las instrucciones en esa función. Cuando se encuentra dentro de una función, puede presionar Shift-F11 (o Depurar | Step out) para ejecutar el resto de la función y volver al lugar donde se llamó la función.

Cuando se inicia el depurador se abre una ventana para la salida del programa, por lo que puede cambiar entre el depurador y esta ventana para ver lo que el programa está enviando a la pantalla.

Además de F10, F11 y Shift-F11 se puede también utilizar Ctrl-F10 (o Depurar | Run to Cursor) para ejecutar a la posición del cursor. También puede establecer puntos de interrupción adicionales y utilizar F5 (o Depurar | Go) para ejecutar a cada uno a su vez. Puede tener varios puntos de interrupción activos y puede desactivarlos o eliminarlos a su voluntad colocando el cursor en ellos y presionando F9.

Si desea ver la definición de una variable, coloque el cursor dentro del nombre de la variable y utilice el Right-mouse-button | Go to Definition. Puede ocurrir que el depurador le diga que no puede hacer esto hasta que ha creado la base de datos del explorador, en cuyo caso dígale que lo haga.

El navegador es una herramienta útil que puede utilizar para obtener la definición de cualquier variable en su programa y los lugares en su programa donde se utiliza esa variable (las "referencias de variables"). Puede invocarlo mediante Tools | Source Browser.

Si su programa toma argumentos de línea de comandos, entonces durante la depuración usted puede establecer estos mediante Project | Settings | Debug | Program arguments.

Para reiniciar el programa desde el principio presione Ctrl-Shift-F5 (o Depurar | Restart).

Para detener el depurador y volver al modo de edición, utilice Shift-F5 (o Depurar | Stop Debugging).


Resumen de los comandos de teclado

F5 Iniciar la ejecución del programa, ejecutarlo hasta que se alcance un punto de interrupción.

Shift-F5 Detener la depuración y volver al modo de edición del programa.

Ctrl-Shift-F5 Reinicie el programa en el modo de depuración.

F9 Insertar, deshabilitar o eliminar un punto de interrupción.

Shift-F9 Obtener el valor de una variable.

F10 Ejecutar la instrucción actual o la llamada de función.

Ctrl-F10 Ejecutar el programa hasta el punto donde se encuentra el cursor.

F11 Si la declaración actual es una llamada de función, ingrese a la función.

Shift-F11 Si ejecuta una función, ejecute hasta el final y regrese a la instrucción de llamada.



Most popular articles:


  • Photo-news blog

  • Clipart Library

  • Keywords base