program correct;
type
   liste   = ^cellule;
   cellule = record
		v    : integer;
		next : liste
	     end;
	      
var
   l : liste;
begin
   l := NIL;
   l^.v := 1;
   new(l^.next);
   l^.next^.v := l^.v + 1;
   writeln(l^.v)
end.
Sur les machines de la miage, on compile généralement avec
pas. Si on veut davantage d'aide du compilateur, il faut
commencer par utilise xlp. On recompile donc:
# xlp -g -o correct correct.pas
(-g indique au compilateur d'inclure les informations de
debugging).
Ensuite, on exécute:
# ./correct
trap trace/BPT(coredump)
On lance ensuite le debugger dbx en lui indiquant le
programme à debugger:
# dbx correct
Type 'help' for help.
reading symbolic information ...
[using memory image in core]
1527-103 Access to storage attempted with a NIL pointer.
 in correct at line 14
   14      l^.v := 1;
(dbx) 
Le debugger indique alors quel est le problème (Access to storage
attempted with a NIL pointer) et la ligne du programme ou le
problème s'est produit. On peut afficher le contenu de variables avec
la commande p.
(dbx) p l
avertissement: Unable to access address 0x20000938 from core
0xffffffff 
La variable l vaut 0xffffffff, c'est à dire NIL sur
le RS/6000 (notez que, contrairement à une légende bien enracinée chez
les étudiants, NIL ne vaut pas 0, pour des raisons qui
dépassent le cadre de IUP1.
Pour quitter: quit.