En este video, Me gustaría explicar cómo
el depurador funciona y como puedes usarlo
para identificar errores y ejecutar expresiones,
e interactuar con los objetos.
Entonces quiero hacer una vez más
los ejercicios que habíamos completado y hecho juntos en el
contador, por lo que uso Monticello,
Entro en el paquete de caché, y
Veo que hay un paquete de contador.
También me permite explicar
esta función aquí. Para estar seguro
este es el paquete correcto, Puedo navegar, es decir
que voy a mirar el Clases definidas en el paquete.
Entonces, aquí veo que tengo un paquete llamado
MyCounter, que contiene 2 clases, contador y
CounterTest, y si miro todas las operaciones
de Counter, tengo el 4 métodos que hemos definido
juntos y de la misma manera para la prueba.
Entonces, ahora sé que esto es este paquete
Quiero cargar, voy a ir hacer carga
Entonces, voy a navegar la clase Contador
Para la clase Counter, las pruebas son verdes, para que podamos comenzar.
Me gustaría mostrarte
cómo podemos usar el depurador para ejecutar una
expresión paso a paso, e ir o no en el
expresiones que queremos ver en mas detalles
Para hacer esto, tomo el TestDecrement
como ejemplo, hago DebugTest.
Prueba de depuración, aquí está, una vez más
¿Qué hace el depurador? ¿Muéstrame?
El depurador muestra la pila de ejecución
Como en Pharo todo es un mensaje, ves que
podemos profundizar en la pila, al principio nosotros
ejecutó el método Run, Deshacer, muchas cosas como esta.
Por el momento, el sistema Por eso no nos importa.
Aquí vemos el código ejecutado en la pila
y el estado del sistema.
Aquí, mira, tengo una variable local C. por el momento
no se ha asignado, así que hay cero.
Y aquí veo ese Ser es de hecho una clase de
CounterTest, este es el método CounterTest >>
#testDecrement.
Cuando hago clic en "sobre" aquí,
Entro en la primera expresión ejecutar.
Tenga en cuenta que, Si yo quiero,
Puedo crear de inmediato, puedo ejecute esto
expresión porque es completa,
la clase Contador se define y yo puedo
envíale el mensaje nuevo.
Aquí veo que C es siempre así, asi que
ahora voy a decir que quiero "Encima".
Over:¿qué significa?
Significa que quiero ejecutar el expresión sin entrar dentro.
Aquí estoy en la segunda expresión que es un
Asignación y haré clic en "Over" una vez más y
de repente mi variable C puntos en un contador
que la puedo ver Aquí por el momento el valor del contador es cero.
Si quisiera saber cómo contar:
se implementa, en lugar de usando "Over" lo haría
use "Into".
"En" me hará entrar el método,
Me gusta esto. Aquí puedo ver la definición del método y
una vez más, puedo interactuar con los argumentos
Aquí tengo un intérprete, si escribo Imprimir, puedo ver
mira que tengo 7 y de todos modos aninteger
está aquí y cuenta, por ahora,
la variable de instancia su valor es nulo
También se muestra allí.
Sigo, hago clic en "Over", porque
Quiero decir que quiero saltar eso.
Quiero continuar la expresion ejecución.
Por lo tanto, allí.
Ahora imaginemos que quiero entrar en decremento,
Haré lo mismo, Haré clic en "Into",
decremento, tengo decremento codigo y,
usted entendió el principio, de esta manera puedo hacer
La expresión paso a paso.
Entonces, ahora, ¿qué hace? ¿Habilita hacer?
Permite decir:"de este punto continúa
como si nada hubiera pasado Entonces eso es lo que voy a hacer
y mi prueba será verde. Así que ahora también podría
ejecute independientemente esto
poco de código, esto significa
Puedo ponerlo en un patio de recreo Me gusta esto,
y aquí tengo Debug, Yo recibo lo mismo
En este caso se compila un poco
diferente pero tengo exactamente lo mismo
funciones, con mi valor de contador que es 7,
y si hago clic en el contador, Puedo ver que tengo 7
aquí y hago clic en "Into" por ejemplo,
Puedo ir en decremento, "Over", "Encima",
y lo mismo en "Over".
Entonces aquí vuelve el valor de cascada, por lo que regresa
el contador C