10.3 ¡Alto!

Un breakpoint es un punto del código en el que se desea detener el procesamiento del código y examinarlo. No siempre se desea avanzar paso a paso para encontrar un problema, especialmente uno que solo se produce de vez en cuando. Es muy útil establecer un breakpoint en el punto en el que se produce el problema.

En Smalltalk, se utiliza el método halt para establecer un punto de interrupción. El mensaje #halt se envía a un objeto que es el foco inicial del depurador.

Cambia el código del Workspace para añadir un #halt como se indica a continuación.

| fileNames |
fileNames := OrderedCollection new.
(DirectoryEntry smalltalkImageDirectory) 
    childrenDo: [ :f | fileNames add: f name. fileNames halt ].
fileNames asArray.

Ejemplo 10.4: Halt: establece un Breakpoint

 note El objeto que recibe el mensaje #halt se convierte en el objeto de enfoque del depurador.

Volvamos a pulsar Ctrl-a. (select All) y Ctrl-p (Print-it).

ch10-06-Halt

Figura 10.6: Halt

Presiona dos veces Over para sobrepasar el breakpoint.

ch10-07-Over

Figura 10.7: Step Over Breakpoint

Bueno, esto me resulta familiar. Sé lo que hay que hacer aquí.

Fíjate en que el comando halt está dentro de un bucle. Mientras estés en el bucle, cada vez que pulses Proceed, alcanzarás el punto de interrupción en la siguiente iteración del bucle.

En muchos entornos de programación, para realizar un cambio es necesario eliminar un proceso, recompilar el código y, a continuación, iniciar un nuevo proceso.

Smalltalk es un entorno vivo. Puedes interrumpir, cambiar o escribir código (botón Create situado en la parte central derecha), reiniciar el marco de la pila y continuar con el procesamiento, ¡todo ello sin deshacer la pila de contexto!

A modo de analogía, en muchos lenguajes de programación, es como si te golpearas el dedo del pie y fueras al médico. El médico te dice: «Sí, te has golpeado el dedo del pie», saca una pistola, te dispara y le envía una nota a tu madre diciendo: «Ten otro hijo». ¡Smalltalk es mucho más amigable!

Ten en cuenta que un gran poder conlleva una gran responsabilidad.29. En un sistema abierto, se puede colocar un punto de interrupción en cualquier lugar, ¡incluso en lugares que pueden interrumpir la interfaz de usuario! Por ejemplo, ¡podría ser perjudicial colocar un punto de interrupción en el código del depurador!


Notas al pie

(29)

https://quoteinvestigator.com/2015/07/23/great-power/