Rastreador de depuración

Esta pestaña 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.

Un punto de depuración lanzado desde la Consola, y el Rastreador de depuración

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 pestaña 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.

El panel de Ninext debe estar abierto: con el panel cerrado, los puntos de depuración alcanzados no se registran. La pestaña Rastreador de depuración, en cambio, no necesita estar en primer plano.

Para probar los ejemplos de esta página, péguelos en la Consola y ejecútelos: el Rastreador de depuración muestra enseguida sus puntos de depuración. La papelera, arriba a la derecha del Rastreador, vacía la lista.

Nota: puede añadir a su cadena de texto cualquier variable que le interese especialmente para ver su valor al instante en la pestaña 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 pestaña, 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 abajo). La primera línea tiene siempre el valor «start».

Esa línea de depuración contiene a su vez una línea por cada variable visible en ese punto del script: las variables declaradas antes de la instrucción debug, la variable de un bucle, e incluso aquella cuya declaración está en curso, que entonces vale «void». Cada línea de variable incluye el nombre, el tipo, el valor y un fragmento del código donde se declara la variable.

Anatomía de una línea del Rastreador de depuración

Desplegar, copiar, abrir

Los valores se muestran como en la Consola:

  • una lista, un registro, un objeto, una referencia o un texto que contiene JSON se despliega con un clic en su flecha;
  • al pasar el ratón por una línea aparece un botón que copia su valor; en la línea del punto de depuración, copia toda la traza;
  • un valor subrayado designa un registro: un clic lo abre en Ninox.

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 se mantiene casi siempre por debajo de 1 ms.

Ninox
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;

Un punto de depuración dentro de un bucle

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.

Ninox
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;

El coste de un select dentro del bucle

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:

Ninox
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;

Medir la duración total de un script