6.11. Debogage

6.11.1 Trace d'erreur ou d'exception

Si une erreur se produit quand on appelle une URL, et que l'option debug du fichier de configuration a la valeur True, une trace est affichée dans le navigateur

L'information fournie est constituée de :

  • l'url appelée
  • un tableau qui montre le script dans lequel l'erreur s'est produite : il peut ne pas s'agir du script correspondant à l'url, au cas où l'erreur s'est produite dans un script inclus par la fonction Include(). Si c'est le cas, l'arborescence des inclusions est affichée. La table montre le nom du script, le nom de l'exception, le numéro de ligne et le texte de la ligne dans le script erronné
  • la trace d'erreur Python brute
  • un bouton "Debug" si l'utilisateur est connecté comme administrateur
Par exemple :

Error in /demo/tour/scriptError.py
Line 2
print blah
NameError: name 'blah' is not defined
Traceback (most recent call last):
  File "/home.41/k/a/r/karrigel/www/core/HTTP.py", line 277, in process_request
    target.run(ns)
  File "/home.41/k/a/r/karrigel/www/core/k_target.py", line 351, in run
    exec (self.py_code,namespace)
  File "", line 2, in ?
NameError: name 'blah' is not defined
En cliquant sur le bouton "Debug" on ouvre un éditeur en ligne pour mettre à jour le script dans lequel l'exception a été trouvée

6.11.2 Utilisation de SCRIPT_END

Quand on débogue un script il peut être utile de se servir de l'exception intégrée SCRIPT_END pour interrompre l'exécution. Si vous voulez connaître la valeur d'une variable quand une exception est déclenchée vous pouvez écrire quelque chose comme

(...)
print "truc vaut",truc
raise SCRIPT_END
(... la ligne qui déclenche l'exception ...)