Rastreador de depuración

Este menú permite inspeccionar el estado de las variables en el momento en que se ejecuta el código. Resulta muy útil para arreglar un script que ha dejado de funcionar, o simplemente durante la fase de depuración.

imagen.png

Para usar la función de depuración hay que colocar una instrucción debug dentro del código con la sintaxis siguiente: debug(parameter : text); Cuando el código se ejecuta y llega a la instrucción debug, se crea una entrada en la vista Rastreador de depuración, con el contenido del parámetro como título y, debajo, una estructura con todas las variables disponibles en ese momento y sus valores actuales.

Nota: puede añadir a su cadena de texto cualquier variable que le interese especialmente para ver su valor al instante en la ventana del Rastreador de depuración, ¡asegurándose de que el tipo sea texto! (por ejemplo, debug("Debug point 1 : " + Variable1); )

Si observamos con atención la ventana de depuración, veremos que cada vez que se ejecuta la instrucción debug se crea una línea nueva.

Esta línea contiene el nombre del punto de depuración, es decir, el texto que se pasa como parámetro a la función debug, por ejemplo: debug("my debug point").

Al principio de la línea se muestra también el tiempo transcurrido desde la línea de depuración anterior. Esto ayuda a evaluar el rendimiento del código (véase más arriba). La primera línea tiene siempre el valor «start».

Esa línea de depuración contiene a su vez tantas líneas de variables como variables se hayan declarado en el script antes de la instrucción debug. Cada línea de variable incluye el nombre, el tipo, el valor y un fragmento del código donde se declara la variable.

debug.svg

Uso dentro de bucles

Al colocar un debug dentro de un bucle, puede ver el estado de las variables en cada vuelta del bucle. También puede ver el tiempo empleado en cada iteración. En el ejemplo siguiente, el retardo es inferior o igual a 1 ms.

let a := select Customer
let d := for i in a do
           debug("for each customer");
           i.'first name' + " " + i.'last name';
         end;
debug("all customers");
d;

Grabación de pantalla 2024-12-29 a las 12.32.33.gif

Pero si añadimos una instrucción costosa en tiempo de ejecución, como la instrucción «select», veremos que el tiempo entre cada iteración aumenta notablemente.

let a := select Customer
let d := for i in a do
           let e := select Invoice where Customer = i;
           debug("for each customer");
           i.'first name' + " " + i.'last name' + " " + sum(e.TOTAL);
         end;
debug("all customers");
d;

imagen.png

Al colocar una instrucción debug antes y después de un bloque de script, puede medir el tiempo total de ejecución del script:

debug("start of script");
let a := select Customer
let d := for i in a do
           i.'first name' + " " + i.'last name';
         end;
debug("end of script");
d;

imagen.png