Debogage d'un CGI

L'utilisation conjointe du debugger symbolique Gdb et du programme d'enregistrement des valeurs des paramètres transmis à un CGI, "capture.cgi", peut vous aider pour trouver les erreurs de programmation.

Le debugger symbolique gdb est un utilitaire Unix permettant de contrôler le déroulement de programmes C, Pascal ou Fortran,... Il permet de mettre des points d'arrêt dans un programme, de visualiser l'état de ses variables ou de sa pile d'exécution, de calculer des expressions, de donner des valeurs à des variables, etc

Xxgdb est l'interface graphique qui facilite l'utilisation de gdb sous Xwindow.

Pour trouver les erreurs, on procède de la façon suivante et dans l'ordre.

  1. Saisie des paramètres: modification de la page html
  2. Lecture des paramètres: modification du cgi
  3. Compilation des programmes
  4. Lancement de xxgdb

1) Saisie des paramètres: modification de la page html

Le programme "capture.cgi" lancé à partir d'une page html (à la place du cgi contenant des erreurs) permet d'enregistrer dans le fichier "capcgi.dat" la valeur des paramètres qui sont transmis au cgi.

2) Lecture des paramètres: modification du cgi

Pendant le debogage, les valeurs des variables ne seront pas transmises par le client au serveur http, mais elles doivent être lues dans le fichier "capcgi.dat" qui a été créé précédemment. Pour cela, on écrit au début du programme:

#define DEBUG 1

et au début de la fonction cgiMain(), après les déclarations mais avant tout autre appel à des fonctions de lecture des paramètres:

#if DEBUG
cgiReadEnvironment("capcgi.dat");
#endif

Attention ne pas oublier de remettre DEBUG à 0 quand on n'est plus en phase de debogage.

3) Compilation des programmes

Les programmes C doivent être compilés avec l'option -g pour pouvoir être débogés à l'aide de gdb. Si l'on utilise un Makefile, il faut que la valeur de la variable CFLAGS contienne (au moins) l'option "-g". Exemple:

CFLAGS = -g

4) Lancement de xxgdb

Pour lancer xxgdb, taper:

xxgbd nom_du_programme_à_déboguer &

dans une fenêtre xterm ou shelltool.

Après quelques secondes nécessaires à l'initialisation de gdb et à la lecture des fichiers à debugger, gdb entre en mode commande et attend les instructions de l'utilisateur. On voit apparaître une fenêtre comprenant 3 zones de texte:

Le fichier qui s'affiche dans la fenêtre source est le fichier contenant la fonction main.
Dans ce cas précis, c'est le fichier "cgicenst.c" qui contient lui-même un appel à la fonction cgiMain vous avez écrite par dans votre programme. Ce fichier n'étant pas dans votre répertoire, il se peut que rien ne s'affiche dans la fenêtre source et alors un message apparait dans la fenêtre de commande (don't hurry) :
cgicenst.c: No such file or directory
Pour afficher votre programme, cliquer sur le menu File et sélectionner votre fichier.

Ensuite, lancer l'exécution du programme en cliquant sur run
Gdb exécute alors le programme comme s'il avait été lancé normalement. L'exécution se poursuit jusqu'à la fin du programme sauf si il y a des points d'arrêt

Pour un mode d'emploi complet de xxgdb, vous pouvez consulter la page.

Christine Potier mars 1998