Traceur de débogage
Cet onglet permet d'inspecter l'état des variables au moment où votre code s'exécute. C'est très utile pour réparer un script qui ne fonctionne plus, ou simplement pendant la phase de débogage.

Pour utiliser la fonctionnalité de débogage, vous devez placer une instruction de débogage dans votre code, avec la syntaxe suivante : debug(parameter : text). Lorsque le code s'exécute et que l'instruction debug est atteinte, une entrée est créée dans l'onglet Traceur de débogage : le contenu du paramètre en sert de titre, et en dessous figure la structure de toutes les variables disponibles à cet instant, avec leurs valeurs courantes.
Le panneau Ninext doit être ouvert : panneau fermé, les points de débogage atteints ne sont pas relevés. L'onglet Traceur de débogage, lui, n'a pas besoin d'être au premier plan.
Pour essayer les exemples de cette page, collez-les dans la Console et exécutez-les : le Traceur de débogage affiche aussitôt leurs points de débogage. La corbeille, en haut à droite du Traceur, vide la liste.
Remarque : vous pouvez ajouter à votre chaîne de texte n'importe quelle variable qui vous intéresse pour en voir la valeur immédiatement dans l'onglet Traceur de débogage — en veillant toutefois à ce que le type soit du texte ! (par exemple debug("Debug point 1 : " + Variable1); )
Si l'on regarde de près l'onglet, on voit qu'à chaque exécution de l'instruction debug une nouvelle ligne est créée.
Cette ligne contient le nom du point de débogage, c'est-à-dire le texte passé en paramètre à la fonction debug, par exemple : debug("my debug point").
Au début de la ligne figure aussi le temps écoulé depuis la ligne de débogage précédente. Cela aide à évaluer les performances du code (voir plus bas). La première ligne porte toujours la valeur « start ».
Cette ligne de débogage contient elle-même une ligne par variable visible à cet endroit du script : les variables déclarées avant l'instruction debug, la variable d'une boucle, et même celle dont la déclaration est en cours, qui vaut alors « void ». Chaque ligne de variable indique le nom, le type, la valeur et un extrait du code où la variable est déclarée.

Déplier, copier, ouvrir
Les valeurs s'affichent comme dans la Console :
- une liste, une fiche, un objet, une référence ou un texte qui contient du JSON se déplie d'un clic sur sa flèche ;
- au survol d'une ligne apparaît un bouton qui copie sa valeur ; sur la ligne du point de débogage, il copie toute la trace ;
- une valeur soulignée désigne une fiche : un clic l'ouvre dans Ninox.
Utilisation dans les boucles
En plaçant un debug à l'intérieur d'une boucle, vous voyez l'état des variables à chaque itération. Vous voyez aussi le temps passé sur chaque itération. Dans l'exemple ci-dessous, le délai reste le plus souvent sous 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;
Mais si l'on ajoute une instruction coûteuse en temps d'exécution, comme l'instruction « select », on constate que le temps entre chaque itération augmente nettement.
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;
En plaçant une instruction debug avant et après un bloc de script, vous pouvez mesurer le temps d'exécution total de ce 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;
