2009-11-05 2 views
2

J'ai écrit un script Perl qui envoie des données aux clients. Cela fonctionne un certain temps (d'une minute à deux heures) puis diminue. Pas d'erreurs dans la console, pas d'erreurs dans le journal. J'ai ajouté une section END - elle n'est pas exécutée.Comment puis-je comprendre pourquoi mon script Perl plante?

Que puis-je faire pour déterminer quel est le problème?

Répondre

10

Puisque le script écrit des données aux clients, je suppose que sa mort prématurée est due à un SIGPIPE non géré. Si tel est le cas, l'installation d'un gestionnaire de signal pour SIGPIPE est un moyen facile de le vérifier. Découvrez perlipc pour plus de détails et des exemples sur les gestionnaires de signaux en Perl.

+0

J'écrivais à un client, qui ferme parfois une connexion avant de lui envoyer toutes les données. Donc, quand il est en ligne, mon script commence à échouer. Merci pour votre conseil. – Lexsys

2

Aucune erreur dans le journal, mais pouvez-vous mettre plus de connexion pour voir exactement où il échoue? C'est-à-dire, des lignes de journal comme:

00:00:00 In section 1 
00:00:05 In section 2 
... 
00:09:28 In section 34 

Puis vous pouvez voir quelle section a été exécutée en dernier. Si cela vous dérange vraiment, vous pouvez également essayer de vous déplacer dans le débogueur Perl et voir si vous pouvez le reproduire. Vous pouvez également essayer de simplifier votre script, en supprimant diverses sections, etc. pour voir si vous pouvez réellement identifier le problème.

Espérons que ça aide.

+1

+1 pour les instructions d'impression. Ils sont les meilleurs pour déboguer n'importe quel code. –

+0

ok. Je vais l'essayer maintenant. – Lexsys

Questions connexes