01 junio 2006

BreakPoints en el Debug (Los menos usados)

Todos utilizamos el debug, pero por lo general no aprovechamos toda su potencia. Ya estamos acostumbrados al Watch de PB, pero rara vez utilizamos las opciones avanzadas de los puntos de interrupción. Cada vez que me toca usarlas, tengo que tirar de la ayuda en html de PB, para recordar como se hacía, y en muchos casos tiramos por la calle de en medio poniendo un IF dentro del bucle que modifica una variable que queremos comprobar cuando alcanzo cierto valor.

Hoy ha tocado, y por eso he querido poner aquí y compartir la sencillez y potencia de las opciones avanzadas de los puntos de interrupción.

Parar cuando queremos parar si una variable cambia de valor:

El punto de interrupción se puede aplicar sobre cualquier variable dentro del alcance. Aquí hay una cosa importante, que es lo que siempre me ha estado confundiendo y es que si estamos en el Painter del Debug pero sin tener este arrancado, solo podemos indicar variables globales, para indicar que se pare cuando una variable local cambie, hay que lanzar el la aplicación en modo debug con una parada dentro del código donde se encuentra la variable local que deseamos utilizar para pausar el debug, y en ese momento ya podemos indicar que variable deseamos que pause el debug cuando esta cambie.

Para poner los puntos de interrupción asociados al cambio de la variable podemos arrastrarla desde el watch o la zona de variables a la zona de BreakPoints, o hacer en dichos sitios click con el botón derecho sobre la variable e indicar “Break on Change”, también en la ventana “Edit BreakPoints” en la ficha de “Variable” podemos añadir una nueva.

Como parar el debug cuando una variable alcance un valor determinado:

El método, creo que más sencillo, es poner un punto de interrupción normal y hacer doble click sobre él en la zona “Breakpoints” y en el cuadro de diálogo que aparece poner la condición deseada, por ej.: li_x = 5, al aceptar, podremos ver en la zona Breakpoints dicha condición del siguiente modo: objeto.evento.linea when li_x = 5.

Además, podemos indicar el número total de ocurrencias que deben darse para realizar una parada, de tal modo que si ponemos un punto de interrupción e indicamos que han de darse 3 ocurrencias, has que no se pase tres veces por ese punto no se pausara el debug, una vez pausado se reinicia el contador interno y sucederá lo mismo si otra vez se llega a 3 veces (según este ejemplo).

Si al introducir el número de ocurrencia lo hacemos junto con una condición no se pausará del debug has que dicha condición se de tres veces.

Lo que falta:

Sería una gozada poder parar el debug cuando una variable cambiara X veces. Cuidado, no hay que confundir esta opción con la de que se pause el debug en un punto determinado del código cuando la variable alcance un valor. Si os fijáis en el cuadro de diálogo “Edit Breakpoints” en la ficha “Variables”, podemos introducir la variable que deseamos que pare el debug cuando cambie, pero sin poder indicarle aquí el número de veces.