Skip to content

Deboguer un programme web CGI

Exemple de session de debogage

Il s'agit de déboguer un programme cgi stateless (voir l'article sur l'architecture REST) tournant sur un serveur Apache dans l'architecture Linux ou Unix.

On suppose que le CGI en question est un programme C (ou C++) lancé par un shell, ce qui est souvent le cas, car il faut définir un environnement (path, ld_library_path, ...). Dans notre exemple, un environnement Oracle est mis en place par l'appel du script /etc/profile.d/ora.sh .

Pour pouvoir lancer le débogeur, il faut d'une part, récupérer les variables d'environnement mises en place par le serveur Web (Apache) et d'autre parr récupérer l'entrée standard du programme CGI (stdin) qui contient les paramètres de formulaire passés en POST.

Prenons en exemple un shell CGI.

#! /bin/bash
echo "Content-type: text/html"
echo

  . /etc/profile.d/ora.sh
HOME=/home/sd
export HOME
PATH=$PATH:/usr/local/bin:.
export PATH
SENLIBDIR=/usr/local/lib
export SENLIBDIR

./programme parametres 2>&1

Voici comment modifier le shell pour lancer un débuggeur lorsqu'on le souhaite. Le débogeur utilisé est Xemacs/gdb. Pour l'activer, il suffit avant de lancer la requête dans le navigateur de replacer DEBUG=N par DEBUG=Y .

#! /bin/bash
echo "Content-type: text/html"
echo

  . /etc/profile.d/ora.sh
HOME=/home/sd
export HOME
PATH=$PATH:/usr/local/bin:.
export PATH
SENLIBDIR=/usr/local/lib
export SENLIBDIR

DEBUG=N

if [ "$DEBUG" = "Y" ] ; then
echo "<pre>"
id
env
export DISPLAY=":0"
cat >debug.in
xemacs 2>&1 &
echo "</pre>"
else
./programme parametres 2>&1
fi

Lorsque Xemacs apparait sur la machine définie par le paramètre DISPLAY (dans l'exemple, la machine qui fait tourner le serveur web, mais on peut très bien choisir une machine distante), il suffit de lancer le débogeur et de taper la commande r parametres <debug.ini.

Note : pour que Xemacs puisse s'afficher sur la machine désignée par DISPLAY, il faut que le serveur X sur cette machine autorise la connexion de l'utilisateur faisant tourner le serveur apache. Dans le cas où on travaille sur son propre PC, il suffit par exemple de faire en sorte que le cgi s'exécute avec l'UID de l'utilisateur ayant ouvert une session X.

Rétroliens

Pas de rétroliens

Commentaires

Afficher les commentaires en Vue non groupée | Vue groupée

Pas de commentaires

Ajouter un commentaire

Marquer un texte en gras: *mot*, souligner un texte: _mot_.
Les smilies standard comme :-) et ;-) sont convertis en images.
:'(  :-)  :-|  :-O  :-(  8-)  :-D  :-P  ;-) 
Les adresses Email ne sont pas affichées, et sont seulement utilisées pour la communication.

Pour éviter le spam par des robits automatisés (spambots), merci d'entrer les caractères que vous voyez dans l'image ci-dessous dans le champ de fomulaire prévu à cet effet. Assurez-vous que votre navigateur gère et accepte les cookies, sinon votre commentaire ne pourra pas être enregistré.
CAPTCHA

Form options