Hola y bienvenidos de nuevo.
En esta conferencia, quiero hacer una demostración de cómo se puede utilizar el depurador.
Así que quiero recorrer la interfaz gráfica de usuario, mostrarle cómo puede iniciar un programa en modo de depuración,
cómo puede establecer puntos de interrupción, cómo puede ver la pila de llamadas y cómo puede ver diferentes variables utilizando
la ventana de vigilancia.
Sólo un simple programa que está determinando un promedio.
Voy a usar esto como demostración.
Lo único que hace es leer tres números enteros, almacenarlos y calcular su media.
Ahora, una cosa que quiero mencionar antes de que realmente utilizar el depurador, usted tiene que asegurarse de
que su configuración está configurada correctamente.
Y he hablado de esto en un video anterior, básicamente la configuración de la luz de código para utilizar el depurador.
Pero sólo para refrescar la memoria, puede seleccionar el proyecto aquí, puede hacer clic derecho e ir a la configuración.
Usted quiere asegurarse de nuevo, dependiendo de la plataforma en la que se encuentre, usted quiere asegurarse
de que la configuración del depurador aquí a la izquierda tiene la ruta correcta a GDB.
Ahora bien, si estás en Windows que puede implicar el uso de GDB X de Cygwin o puede ser el uso de la MinGW w64, lo que sea que tienes
trabajando.
Si estás en Unix y Linux, esta ruta no tiene por qué estar configurada.
La otra cosa importante es en las opciones del compilador que desea asegurarse de que está compilando
para la depuración de modo que Dash G enano está en dash o para la optimización.
De nuevo, en Windows, esas cosas tienen que estar configuradas para tener información de depuración junto con
tu ejecutable.
También tienes que asegurarte de que estás construyendo para el modo de depuración.
Así que tienes que asegurarte de que debug está seleccionado y no release.
Una vez que tengas todas esas cosas configuradas correctamente, deberías poder usar el depurador y la luz
de código.
Si tiene algún problema con eso, por favor vuelva a mi video para configurar en su plataforma.
El depurador y Code Light.
El concepto más importante relativo al depurador es la idea de punto de interrupción.
Un punto de interrupción es algo que puedes establecer en tu programa y que detendrá la ejecución de
tu código.
Esencialmente puedes decir, Hey, quiero detenerme en esta línea y tu programa cuando ejecutes el depurador
se detendrá en esa línea Eso te permite mirar las variables, los valores de las variables.
Le permite recorrer su código línea por línea para intentar diagnosticar y solucionar cualquier problema que
pueda tener.
Normalmente, cuando ejecutas tu programa, si intentas ejecutarlo en el depurador y no tienes un punto de interrupción establecido,
no va a pasar nada.
Así que normalmente cuando usted construye, usted sabe, usted puede ir y usted puede construir su proyecto
al igual que cualquier otro proyecto, ir a construir, ir a construir proyecto.
Cuando lo construyes y lo ejecutas en modo depuración, tienes que subir a la opción de menú depurador y tienes
que ir a inicio, continuar depurador.
Y cuando ejecutes eso de nuevo, si tienes un punto de interrupción establecido, lo alcanzará.
Si no tiene un punto de interrupción establecido, simplemente se ejecutará.
Así que si tratamos de ejecutar este programa en modo de depuración, que acaba de llegar y pide enter porque se detiene
justo en los números y, a continuación, sólo tiene que golpear algunos números en y sólo se cierra.
Ni siquiera imprime la información, ¿verdad?
Así que es muy importante si quieres usar el depurador que tengas al menos un punto de interrupción establecido.
La forma más fácil de establecer un punto de interrupción es simplemente hacer clic dentro del margen por los números de línea en el número de línea que desea establecer
el punto de interrupción.
Y de nuevo, un punto de interrupción va a detener la ejecución en ese número de línea.
Así que si establecemos un punto de interrupción justo al lado de la función printf en la línea diez, simplemente hacemos doble clic,
verás que se coloca un círculo rojo.
Esto le dice al depurador, hey, detente en la línea diez.
Así que de nuevo, la forma en que iniciamos el depurador es que vamos a depurador y decimos, iniciar, continuar, ¿verdad?
Todo lo demás está en gris, ¿verdad?
Así que vamos a iniciar el depurador sólo para golpear ese punto de interrupción.
Así que vamos a empezar a continuar el depurador y vamos a decir construir y depurar y te darás cuenta
de que el programa se detiene en la línea diez.
Usted ve que la flecha verde, Usted también ve que el panel depurador apareció.
Así que si usted va a la vista, en realidad puede traer el panel depurador manualmente o puede aparecer automáticamente
cuando se entra en modo de depuración y el panel depurador tiene muchas pestañas diferentes para la información que se puede ver.
También puede ir a través de él a través del depurador de ir a GDB ventanas, usted puede ver todos los que están
marcados.
Hay muchas ventanas del depurador que puedes mirar.
Así que los locales suelen tener que ver con los relojes de sus variables locales.
Puedes poner un reloj en una variable para que si la variable cambia aparezca.
La salida se utiliza para diferentes opciones de depuración e hilos de salida.
Puedes ver los hilos que están ejecutando tu programa.
Nos centramos en el concepto más avanzado de Callstack.
Básicamente miramos la pila de llamadas y los locales.
Esos son los dos más importantes que le ayudan con la depuración y luego la memoria y luego también los puntos de interrupción.
Puedes ver dónde están fijados los puntos de interrupción.
Así que muchas opciones diferentes.
Actualmente estamos parados en la línea diez.
Podemos mirar la pila de llamadas.
La pila de llamadas nos muestra que se llama a la función principal.
Si miramos en locales, nos muestra tres variables cero uno y cero.
En realidad no hemos introducido ninguna información en esos se inicializan cero uno y cero.
El reloj es que realmente se puede añadir.
Añada pulsando el signo más para añadir una vigilancia sobre una variable determinada.
Y luego la otra cosa importante a notar es cuando se ejecuta en modo de depuración, ahora tiene la barra de herramientas
para el depurador, ¿verdad?
El botón de reproducción continuará.
Así será.
Si le doy al play, saldrá el programa, ¿no?
Empezará a funcionar.
De hecho, el programa le pedirá que introduzca datos.
Así que le di al play.
Vuelvo a la aplicación de consola y dice Enter.
Así que me golpeó mis tres números en el programa se ejecuta.
Entonces seguías sin ver la función de impresión.
La ventana desapareció.
Así que de nuevo, se ejecuta en modo de depuración y se va al punto de interrupción de nuevo, el panel depurador aparece, se detiene
la línea diez.
Ahora, la barra de herramientas es importante porque así es como puedes recorrer tu código
y puedes usar la barra de herramientas o puedes ir al depurador y ver todas las opciones aquí arriba.
Así que usted puede decir paso a paso en la instrucción siguiente, la siguiente instrucción, paso a paso, paso a paso irá
dentro de una función.
Si se está llamando a una función en esa línea, la instrucción step into va más al tipo de lenguaje
ensamblador.
A continuación, vamos a saltar sobre esa línea de código a continuación.
Y la instrucción del cuello son más o menos lo mismo.
Step out, trata de saltar de una función si ya estás en una y saltar a la línea de la zanahoria.
En realidad creo que va al cursor.
Lo mismo con correr a la línea de la zanahoria.
Puedes activar y desactivar los puntos de interrupción, desactivarlos todos, todas esas cosas para que puedas acceder a esto a través
del menú.
O de nuevo, la barra de herramientas.
Normalmente uso la barra de herramientas porque ya está puesta.
Y luego, si nos fijamos en las diferentes ventanas de nuevo, locales pila de llamadas y puntos de interrupción.
Realmente los importantes.
Esto dice que tengo un punto de interrupción en la línea diez.
Y luego creo que uno sólo dice el cursor.
Así que ahora me he detenido aquí en print F enter en la línea diez.
Puedo ir a la siguiente instrucción y esto irá a la línea 11 de escaneo.
F es en realidad una función de bloqueo que pide entrada.
Así que si trato de ir a continuación aquí, en realidad sólo tipo de pausas.
Puede que tengas que pulsar siguiente varias veces.
Lo que suelo hacer cuando el programa está pidiendo entrada y yo quiero, ya está bloqueado, ya está parado
y quiero que pase al siguiente.
Pondré un punto de interrupción en la siguiente línea y pulsaré el botón de reproducción.
Así que ahora pulso el botón de reproducción y no pasa nada porque está esperando la entrada.
En el programa pone Enter.
Así que aquí puedo golpear cinco, seis, siete, pulsa el botón enter y ahora llega a mi punto de ruptura.
Así que ahora estamos en el botón de impresión donde realmente podemos saltar a la función de impresión.
Y en realidad primero saltará a la función media.
Así que si decimos paso a vemos que vamos a la función media.
Y lo que notarás es que si miras tus variables, puedes ver cómo cambian.
Así que si vas a siguiente, vas a la siguiente línea en 27, luego 28, y luego sigue golpeando.
A continuación, saltas y estás al final de la función.
Entonces puedes darle al play y puedes ver que tu programa se ha completado y la ventana se ha ido.
Pero puedes mirar tus variables, puedes mirar todo lo demás.
Y así, de nuevo, también puede poner un punto de interrupción dentro de la función de impresión aquí mismo.
Y si corremos a eso, podemos ver de nuevo que la función de impresión se detendrá la ejecución en lugar de la
media.
Y entonces podemos tipo de ver lo que está pasando en el real si damos un paso más y vamos
a la aplicación, se puede ver que la información fue impresa.
¿Verdad?
Al continuar, cuando se ejecuta hasta el final, se obtiene la sentencia return y el programa saldrá.
Así que es importante que si quieres ver la salida del programa coloques un punto de interrupción
antes de ese retorno y no tengas que continuar.
Puedes detener el depurador pulsando ese rectángulo rojo, pausar el depurador pulsando las dos barras
paralelas, reiniciar el depurador con esa opción y la pila de llamadas.
De nuevo, es más fácil de ver aquí si te metes dentro de una función y ejecutas el depurador, ejecutaremos el depurador
de nuevo.
Di depurador, iniciar, continuar.
Y cuando lleguemos a ese punto de ruptura después de introducir información dentro de una función, verás que la pila
de carros tiene el main y el print tal y como mostramos antes.
Y así se puede ver la última función que fue invocada ahora con un programa que tiene muchas funciones y así sucesivamente,
la pila de llamadas puede llegar a ser mucho más grande que esto.
La única otra cosa que puede ser importante son los puntos de interrupción.
Si quieres ver qué puntos de interrupción has establecido, te mostrará todos los puntos de interrupción y todo el programa
donde están ubicados.
Pero tendrás que jugar con esto, familiarizarte con ello, sentirte cómodo y utilizarlo con bastante frecuencia para
problemas que no puedas resolver con técnicas o programas de depuración básicos.
Crash ir línea por línea.
Y a medida que se avanza línea por línea, se puede ver la salida del programa una vez que se
bloquea y se sabría en qué línea ocurrió.
De nuevo, este es un programa pequeño, pero deberías tener la comprensión básica de cómo funciona la depuración.
De nuevo, espero que le haya sido útil.
La mejor manera de aprender estas cosas es empezar a jugar con ellas y empezar a utilizarlas.
Traiga a colación uno de los programas en los que trabajó en su reto anterior.
Añade un punto de ruptura, muy sencillo.
Basta con hacer clic en el interior para añadir puntos de ruptura.
Inícialo en modo depuración y recorre cada línea para ver cómo cambian las variables y cómo aumenta
la pila de llamadas.
Si tienes funciones más grandes.
Gracias, señor.