Débogage d'une structure if
Pour déboguer une structure if telle que :
if [expression booléenne] then [...] else [...] end if
sélectionnez l'expression booléenne seule puis appuyez sur ⌘R. La Console affiche alors true ou false suivant le résultat du test. Exécutez ensuite les lignes suivant then ou celles suivant else en fonction du résultat.
Débogage d'une boucle repeat
Vous pouvez sélectionner une structure repeat [...] end repeat complète et ainsi l'exécuter d'un bloc. Insérez dans la boucle les commandes nécessaires au suivi du déroulement de la boucle. Par exemple, si vous pensez que la boucle déclenche une erreur après un grand nombre d'itérations, vous pouvez définir un compteur (i) et insérer une commande postit comme dans l'exemple suivant :
set i to 0
repeat with the_item in the_list
set i to 1 + i
-- lignes à déboguer
postit i
end repeat
Lorsque la boucle s'interrompra du fait d'une erreur, la fenêtre Message indiquera alors le dernier index ayant fonctionné correctement et vous pourrez exécuter directement l'itération qui pose problème :
set the_item to item n of the_list
n étant la valeur que vous avez identifiée comme suspecte. Il ne reste plus qu'à exécuter pas à pas le contenu de la boucle de façon à identifier quelle ligne est en cause.
S'il est important d'exécuter les n premières itérations normalement, insérer simplement avant le end repeat la ligne suivante :
if i is n - 1 then return
Pour exécuter plusieurs itérations pas à pas (par exemple si vous soupçonnez qu'une erreur survient après quelques itérations), définissez un compteur et simulez la boucle comme dans l'exemple suivant :
repeat with the_item in the_list -- à ne pas exécuter en mode débogage
set i to 0 -- initialiser le compteur une fois
set i to 1 + i -- avant chaque itération, exécuter cette ligne ...
set the_item to item i of the_list -- ... et celle-ci
-- lignes à déboguer pas à pas
end repeat -- à ne pas exécuter en mode débogage
Exécutez d'abord la ligne d'initialisation du compteur, puis avancez pas à pas dans la boucle. À chaque itération, exécutez les deux lignes de "simulation de boucle", puis exécutez le contenu de la boucle pas à pas (ou par bloc), en vérifiant le résultat dans la Console. Inutile de se préoccuper de la fin de boucle : on obtient naturellement une erreur Index invalide lorsque le compteur dépasse la taille de la liste.
|