PERL : traquer une segfault

PERL : traquer une segfault - Programmation

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 :  
Reply

Marsh Posté le 21-08-2002 à 10:57:46   

Reply

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 ;  


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

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.  
 

Reply

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


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

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
(gdb) run monscript.pl
Blah blah
Segmentation fault
(gdb) backtrace


Dans le second, c'est probablement un bug de l'interpréteur.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

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 ?


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Marsh Posté le 21-08-2002 à 12:18:51    

et si tu nous montrais ta fonction pour voir ?


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

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 ..


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

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.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

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


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 21-08-2002 à 12:52:37   

Reply

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...


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

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.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

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.


---------------
Graphisme, créations, court-métrages, fonds d'écrans :  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed