Al detenerse en y reanudar desde un punto de interrupción

Aprender a usar el depurador es una de las cosas más importantes que usted puede hacer para su juego de C ++. Lo que sigue son las medidas necesarias para establecer un punto de interrupción, poner fin a su programa, examinar algunas variables, y reanudar el programa.

A partir de la primavera de 2014, Code :: Blocks no se integra con el depurador para el Mac, así que si usted es un usuario de Mac estos ejemplos puede no funcionar para usted.

¿Qué es un depurador?

Antes de ir más lejos, puede ayudar si usted entiende lo que es un depurador. UN depurador es un programa independiente que le permite controlar su programa en ejecución. Concretamente se le permite detener la ejecución del programa en líneas específicas de código, para examinar el valor de las variables, para cambiar el valor de las variables, y para continuar con la ejecución del programa.

El depurador de GNU tiene una interfaz de línea de comandos que a la vez difícil de recordar y difícil de usar (que es una combinación ganadora si alguna vez ha escuchado uno). Afortunadamente, Code :: Blocks proporciona una interfaz gráfica casi perfecta para el depurador de GNU. Mientras hace clic en las ventanas de edición y activar menús desplegables, Code :: Blocks envía comandos crípticos al depurador en el fondo y luego interpreta y muestra gráficamente los resultados. No es genial cuando dos programas de charla en el fondo para salvar trabaja?

La mejor manera de aprender sobre el depurador es que sólo tienes que seguir estos ejemplos.

Configuración de su programa utilizar el depurador

Es necesario construir su programa usando una configuración especial del compilador si va a ejecutar el programa bajo el control del depurador. La forma más sencilla de hacer esto es justo al principio, cuando se crea el proyecto. Después de haber especificado que desea crear una aplicación de consola y siempre que el nombre del programa, Code :: Blocks le preguntará si desea construir su programa en la configuración de depuración, configuración de lanzamiento, o ambos, como se muestra en la Figura 1 . Asegúrese de que la configuración de depuración está habilitada.

Video: Como recuperar y reanudar descarga con INTERNET DOWNLOAD MANAGER!

Figura 1: El asistente de proyectos le da la opción de especificar una configuración de depuración cuando se crea
Figura 1: El asistente de proyectos le da la opción de especificar una configuración de depuración cuando se crea el proyecto.

Un programa de configuración de depuración incluye una gran cantidad de información adicional que necesita el depurador con el fin de hacer su magia. Esta información incluye

  • La dirección de cada línea de código fuente en C ++

  • La dirección de cada variable

  • Los nombres y el maquillaje de cada clase en su programa

Toda esta información depurador añade mucho volumen al programa ejecutable - cientos de kilobytes o más. Este espacio es totalmente innecesario si no se va a ejecutar el programa bajo el control del depurador, por lo Code :: Blocks le da la opción de ejecutables de construcción sin esta información en lo que se conoce como la configuración de lanzamiento. los programas de liberación son más pequeños, cargue más rápido, e incluso ejecutar más rápido.

Si habilita tanto de depuración y liberación configuraciones en su proyecto, por lo que recibirá para elegir a la hora de construir el tipo de ejecutable que está tratando de construir.

Hay dos diferencias entre las configuraciones de depuración y liberación:

  • La configuración de depuración incluye la -gramo opción del compilador.

    Esta opción le indica al compilador que incluya información de símbolos en el ejecutable final. Esto es todo eso se ha mencionado anteriormente - la dirección de cada línea de código y de todas las variables, así como una descripción de cada clase se utiliza en su programa.

  • El optimizador de código está desactivada en configuración de depuración y activada en la configuración de liberación.

    El optimizador de código GNU genera programas que se ejecutan más rápido, pero lo hace moviendo las instrucciones en torno de una manera que puede ser muy confuso cuando se va a depurar su programa. La configuración de liberación no incluye la -gramo cambiar y permite un cierto nivel de optimización a través de la inclusión de la -O cambiar.

Asegúrese de que usted está construyendo actualmente la liberación de depuración seleccionando Build → Seleccionar destino → Depuración, como se muestra en la Figura 2.

Figura 2: Usted todavía tiene que asegurarse de que usted está construyendo el ejecutable depurable, incluso si
Figura 2: Usted todavía tiene que asegurarse de que usted está construyendo el ejecutable depurable, incluso si se habilita configuración de depuración cuando se creó el proyecto.

Reconstruir su programa seleccionando Generar → reconstruir.

Al detenerse en un punto de interrupción

Para establecer un punto de interrupción, simplemente haga clic en el área justo a la derecha del número de línea - esta zona es conocida en la jerga de Code :: Blocks como el canal. No sólo aparece la línea de un color diferente, lo que indica que el editor ha seleccionado, pero una pequeña muestra de la parada aparece en el canal, como se muestra en la Figura 3. Esto es una indicación de que un punto de interrupción se ha fijado en la línea 11.

Figura 3: Code :: Blocks utiliza una pequeña señal linda parada para indicar cuando se establece un punto de interrupción.
Figura 3: Code :: Blocks utiliza una pequeña señal linda parada para indicar cuando se establece un punto de interrupción.

Puede configurar tantos nodos por los que desea a la vez, pero este punto de interrupción va a estar bien para este ejemplo.

A continuación, se puede iniciar el programa usando la depuración → Iniciar / opción que se muestra en la Figura 4 Continuar.

Figura 4: Inicio (o reanudar) la ejecución de su programa utilizando la depuración - & gt; Inicio / Continuar Opti menú
Figura 4: Inicio (o reanudar) la ejecución de su programa usando la depuración-gt; opción de menú Inicio / Continuar.

El programa comienza la ejecución como normal pero se detiene casi inmediatamente con una pequeña flecha que apunta amarilla en línea 11 como se muestra en la Figura 5. Además, aparece una ventana en blanco que normalmente contener salida del programa. Nada de lo que aparece en la salida del programa debido a la línea 11 todavía tiene que ejecutar.

Figura 5: La ejecución del programa se detiene tan pronto como el programa encuentra un punto de interrupción.

Figura 5: La ejecución del programa se detiene tan pronto como el programa encuentra un punto de interrupción.

¡Guauu! Eso es genial.

Continuar con la ejecución de un programa de

Se podría establecer un punto de interrupción en la línea siguiente y selecciona Depuración → Iniciar / Continuar para continuar con la ejecución del programa a la línea siguiente si queríamos, sin embargo, ya que esta es una cosa tan común de hacer, Code :: Blocks proporciona la depuración Siguiente → opción de línea, lo que significa, “Ejecutar el programa a la siguiente línea.”

Si lo hace, hace que el programa parpadear momentáneamente como el control pasa al programa el tiempo suficiente para ejecutar la línea 11 antes de llegar a una parada de nuevo, como se muestra en la Figura 6.

Figura 6: La ejecución del comando siguiente línea hace que el depurador para ejecutar una línea en el programa.
Figura 6: La ejecución del comando siguiente línea hace que el depurador para ejecutar una línea en el programa.

Puede repetir este proceso tantas veces como desee, de manera efectiva un solo paso a paso mi camino a través del programa.

Cuando se llega a una llamada de función, Línea siguiente permanece en la función actual, la ejecución de la función entera como si se tratara de una sola línea (que es en este nivel). Si desea pasar el control a la llamada de función, seleccione Depuración → Camine en su lugar. Esto sólo funciona para las funciones para las que tiene el código fuente - esto no funciona muy bien para las funciones de biblioteca de C ++.

En cualquier momento que se cansa de un solo paso a paso alrededor, usted puede terminar el programa seleccionando Depurar → Detener el depurador. Esto no sólo se detiene el depurador, pero que se detenga su programa también.

El examen de las variables

Solo paso a paso a través de su programa es una gran manera de tener una idea de dónde va su programa, pero puede ser difícil de entender por qué a menos que pueda examinar las variables se utilizan para tomar decisiones. Por ejemplo, cuando un solo paso el programa de ejemplo, es posible que observe que el control no entra en el para bucle en absoluto. ¿Porqué es eso?

Se detiene el programa seleccionando Depurar → Detener depuración o presionando Shift + F8 y reiniciar seleccionando Depurar → Iniciar / continuar o presionando F8. Un solo paso mediante la selección de Depuración → Siguiente línea o pulsando F7 hasta que la ejecución alcanza el comienzo de la para lazo.

En esta ocasión, asegúrese de que la ventana Inspección es visible mediante la selección de las ventanas de depuración Depuración → → relojes. Aparece una ventana como la de la Figura 7 que muestra los valores de los argumentos y las variables locales. Observe que nNumberofArgs es 1, sólo el nombre del programa en sí. Desde I comienza con un valor de 1, el bucle nunca va a ser ejecutado. Añadir las variables de reloj pszArgs [0] y pszArgs [1] para ver lo que contienen: el nombre del programa y un nulo. Aha! El programa no tiene argumentos para repetir.

Figura 7: la ventana de visualización permite al programador para ver el valor de las variables.
Figura 7: la ventana de visualización permite al programador para ver el valor de las variables.

Puede cambiar los argumentos para el programa seleccionando Argumentos Proyecto Conjunto → Programas. En esta ventana, se puede poner lo argumentos que desea.

Observe que la ventana Inspección me muestra el nombre de la variable, su tipo y su valor. No se puede cambiar el tipo, pero puede cambiar su valor desde esta ventana, si lo desea. Cambiar el valor de nNumberofArgs no es muy útil, pero a veces cambiando el valor de una variable me permite forzar la ejecución por un camino diferente sólo para ver lo que podría suceder.

Video: Como Pausar Los Archivos De uTorrent Y Apagar La PC Sin Cancelar La Descarga

Continuando un programa parado

Un truco para recordar es que a veces puede resultar confuso en cuanto a porqué un programa se detiene. No todos los programas que se detienen están bajo el control del depurador. A veces están a la espera de la entrada del usuario.

Para ver este efecto, de un solo paso el programa PrintArgs hasta que el control llega a la línea 26. Cuando se selecciona Línea siguiente, el cursor desaparece como se muestra en la Figura 8. Se acabó la flecha amarilla agradable que recuerda a donde estoy en el programa. ¿Que pasó?

Figura 8: Control aparece a desaparecer cuando el programa está esperando la entrada del usuario.
Figura 8: Control aparece a desaparecer cuando el programa está esperando la entrada del usuario.

Lo que pasa es que el programa está esperando a que pulse Intro en el teclado. En primer lugar, usted tiene que seleccionar la ventana del programa. A continuación, puede pulsar Enter (puede que tenga que hacer esto más de una vez). Una vez hecho esto, parece que nada sucede en la ventana del programa ya que el control ha pasado ahora de nuevo al depurador en la ventana de Code :: Blocks. Al seleccionar la ventana de nuevo, se ve la flecha amarilla tranquilizador que me decía que Code :: Blocks es recuperar el control.

Cuando se está ejecutando su programa bajo el aparece de depuración y control simplemente a desaparecer, el programa puede estar esperando la entrada del teclado. Cambiar a la ventana del programa para ver si ese es el caso. Si es así, tan pronto como entras en algo, control volverá de nuevo al depurador.

Artículos Relacionados