PERL : traquer une segfault - Programmation
Marsh Posté le 21-08-2002 à 11:04:28
du genre des utilitiares comme strace, ou autres ( j'ai essayé strace, j'arive pas a trouver le seg fault avec, alors je voudrais essayr d'autres trucs ;
Marsh Posté le 21-08-2002 à 11:11:25
Perso en C, pour résoudre ce genre d'erreur, je cherche tjs en premier du côté des types de variables et des indices de tableaux, c'est des causes d'erreurs très fréquentes.
En Perl, ce doit être pareil je pense.
Marsh Posté le 21-08-2002 à 11:13:26
non car il n'y a pas de typage de données, et le dimensionement des tableaux est totomatique
Marsh Posté le 21-08-2002 à 11:16:35
Cette fonction, elle est écrite en C ou en perl ?
Dans le premier cas, tu peux utiliser gdb :
gdb /usr/bin/perl |
Dans le second, c'est probablement un bug de l'interpréteur.
Marsh Posté le 21-08-2002 à 11:20:29
c'est une fonction perl .
Ce n'est pas un bug de l'interpreteur ( enfin je veux dire que si l'interpreteur merde, c'est que ya un moment je l'ai fait merder ....) vous connaissez pas des bons modules CPAN pour avoir un stack trace utile ?
Marsh Posté le 21-08-2002 à 12:18:51
et si tu nous montrais ta fonction pour voir ?
Marsh Posté le 21-08-2002 à 12:33:00
mmmmm désolé mais non. c'est un script pour une boite et c pas possible de montrer, je sais c chiant, je suis le premier a etre soulé.
en plus, le script total ( + modules ) doit faire dans les 2500 lignes alors ..
Marsh Posté le 21-08-2002 à 12:49:16
sihal_again a écrit a écrit : c'est une fonction perl . Ce n'est pas un bug de l'interpreteur ( enfin je veux dire que si l'interpreteur merde, c'est que ya un moment je l'ai fait merder ....) |
En aucun cas ça ne devrait faire une erreur de segmentation, l'interpréteur devrait afficher lui-même l'erreur.
Marsh Posté le 21-08-2002 à 12:52:37
sihal_again a écrit a écrit : mmmmm désolé mais non. c'est un script pour une boite et c pas possible de montrer, je sais c chiant, je suis le premier a etre soulé. en plus, le script total ( + modules ) doit faire dans les 2500 lignes alors .. |
Oki, moi y en a comprendre toi
quand tu fais un perl -c -w TonScript.pl, ça ne génère pas plus de messages d'erreur ?
Et sinon, as-tu la possibilité d'exécuter ton script via un autre script, lequel le lancerait via un eval ? Peut être que là aussi, tu pourrais chopper davantage d'info ?
Sinon, je ne vois qu'une autre solution : mettre en commentaires les lignes que tu juges douteuses, compiler le script et si po d'erreurs, décommenter les lignes par petite portion
Marsh Posté le 21-08-2002 à 14:00:17
l'eval ne sort rien.
sinon, désolé JarJar, mais en codant comme un porc, on peut avoir un SIGSEGV, en manipulant n'importe comment des références ( remarque je ne vois pas comment faire donc...) en fait le jeu serait d'arriver a prduire une erreur de segmentation histoire de savoir ce qui les cause...
Marsh Posté le 21-08-2002 à 16:49:31
sihal_again a écrit a écrit : sinon, désolé JarJar, mais en codant comme un porc, on peut avoir un SIGSEGV, en manipulant n'importe comment des références ( remarque je ne vois pas comment faire donc...) en fait le jeu serait d'arriver a prduire une erreur de segmentation histoire de savoir ce qui les cause... |
Normalement, quoi qu'il arrive dans ton code interprété, c'est l'interpréteur qui doit détecter les débordements (éventuellement en utilisant des exceptions sur les SIGSEGV, par exemple). Exemple con : si tu regardes dans un pointeur qui ne pointe sur rien, avec un langage compilé ça segfaulte. Avec un langage interprété, c'est à l'interpréteur de dire que ça ne pointe sur rien, histoire que tu puisses définir tes propres exceptions.
Marsh Posté le 21-08-2002 à 20:17:41
je suis d'accord. mais pour que linterpreteur sote une segfault il faut quil y ait une raison.
en loccurence, voici pourquoi ca plantait:
javais un certain nombre de handlers de signals, certains avec des actions a l'interieur. hors, si en général ca ne pose pas trop de problèmes, c dangereux si on utilise des modules qui utilisent des librairies C ( pour dobscures raisons ) . C'etais mon cas: XML::Parser et dans une moindre mesure, DBI. en bloquant les signaux génants en rentrant dans le parseur, jai résolu mon pb.
Marsh Posté le 21-08-2002 à 10:57:46
salut a tous: j'ai une fonction qui me segfault a la gueule, esty ce que vous auriez des idées pour traquer ca ?
---------------
Graphisme, créations, court-métrages, fonds d'écrans :