Outils pour utilisateurs

Outils du site


perl:le_debugger

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
perl:le_debugger [2009/03/15 00:58] – édition externe 127.0.0.1perl:le_debugger [2013/03/13 11:06] (Version actuelle) root
Ligne 1: Ligne 1:
 +====== Le debugger ======
 +
 ====== 1. Présentation ====== ====== 1. Présentation ======
  
Ligne 6: Ligne 8:
  
 Nous avons vu qu'il était facile d'utiliser la console et quelques //print// bien placés pour obtenir des traces simples et facile à lire, par ex : Nous avons vu qu'il était facile d'utiliser la console et quelques //print// bien placés pour obtenir des traces simples et facile à lire, par ex :
 +<code perl>
   print "Liste 'bla': ".join(' - ', @bla)."\n";   print "Liste 'bla': ".join(' - ', @bla)."\n";
   print "$_ => $tab{$_]\n" foreach keys %tab;   print "$_ => $tab{$_]\n" foreach keys %tab;
 +</code>
  
 Mais ces affichages sont limités, rébarbatifs pour les tableaux, et surtout ne peuvent pas rendre compte facilement de structures imbriquées basées sur les références. On peut alors appeler à la rescousse un module **standard** très pratique : Mais ces affichages sont limités, rébarbatifs pour les tableaux, et surtout ne peuvent pas rendre compte facilement de structures imbriquées basées sur les références. On peut alors appeler à la rescousse un module **standard** très pratique :
 +<code perl>
   use Data::Dumper;   use Data::Dumper;
      
   print Dumper(\@list, \%tab);   print Dumper(\@list, \%tab);
 +</code>
  
 Ceci affichant par exemple : Ceci affichant par exemple :
Ligne 27: Ligne 33:
  
 Notez l'utilisation des références sur des listes ou des tableaux lors de l'appel à //Dumper// : sans passage par référence, les structures sont //mises à plat// sous forme de liste et //Dumper// ne peut que les considérer comme des variables distinctes à afficher. Ainsi avec //print Dumper(@list)// on obtiendrai : Notez l'utilisation des références sur des listes ou des tableaux lors de l'appel à //Dumper// : sans passage par référence, les structures sont //mises à plat// sous forme de liste et //Dumper// ne peut que les considérer comme des variables distinctes à afficher. Ainsi avec //print Dumper(@list)// on obtiendrai :
 +<code perl>
   $VAR1 = 'lundi';   $VAR1 = 'lundi';
   $VAR2 = 'mardi';   $VAR2 = 'mardi';
   $VAR3 = 'mercredi';   $VAR3 = 'mercredi';
 +</code>
  
 Il reste que ces méthodes d'introspection sont limitées et demandent des modifications fréquentes du code à analyser. Il reste que ces méthodes d'introspection sont limitées et demandent des modifications fréquentes du code à analyser.
- 
  
 ====== 2. Utilisation ====== ====== 2. Utilisation ======
Ligne 132: Ligne 139:
 Pour faire l'analyse d'un programme selon une variable et ses changements d'état, positionner correctement les points d'arrêts et effectuer les affichagent qui conviennent est peu efficace. Perl peut surveiller pour nous tout changement d'état, et en particulier des conditions quelconques sur une variable quel que soit l'endroit où celle-ci est modifiée : c'est ce qu'on appelle les sondes (//watches// en anglais). Pour faire l'analyse d'un programme selon une variable et ses changements d'état, positionner correctement les points d'arrêts et effectuer les affichagent qui conviennent est peu efficace. Perl peut surveiller pour nous tout changement d'état, et en particulier des conditions quelconques sur une variable quel que soit l'endroit où celle-ci est modifiée : c'est ce qu'on appelle les sondes (//watches// en anglais).
  
-^ **Commande** ^ **Nom** ^ **Action**^ +^ **Commande** ^ **Nom** ^ **Action** ^ 
-| **w** variable|expression | //watch// | pose une sonde: arrête le programme si la variable est modifiée ou l'expression est vérifiée| +| **w** | //watch// | pose une sonde: arrête le programme si la variable est modifiée ou l'expression est vérifiée | 
-| **W** ... | //delete watch// | supprime une sonde|+| **W** ... | //delete watch// | supprime une sonde |
  
 La commande **L** permet d'afficher les sondes posées (cf. flux du programme plus haut). Exemple d'utilisation : La commande **L** permet d'afficher les sondes posées (cf. flux du programme plus haut). Exemple d'utilisation :
Ligne 170: Ligne 177:
   0.11 0.007 6.436 870 0.0000 0.0074 SDL::Surface::blit   0.11 0.007 6.436 870 0.0000 0.0074 SDL::Surface::blit
   0.08 0.005 6.544 435 0.0000 0.0150 main::win_update   0.08 0.005 6.544 435 0.0000 0.0150 main::win_update
- 
perl/le_debugger.1237078720.txt.gz · Dernière modification : 2009/03/15 00:59 (modification externe)