Printstacktrace - pile des appels des fonctions et procédure

Soyez le premier à donner votre avis sur cette source.

Vue 7 212 fois - Téléchargée 421 fois

Description

Bonjour,

Voici un exemple concret de la source déposée il y a quelques jours au sujet des classes singleton (en VB6)

Il s'agit d'un outils de traçage de la pile des appels des fonctions et procédures. Attention, attention, ne nous
emballons pas, cela n'est pas sans contraintes, cela ne se fait malheureusement pas tout seul :
vous allez devoir ajouter à votre fonction/procédure un appel au traceur :o(

Cette source n'a pas la prétention d'être un réel traceur, mais plutôt un paliatif. Toutes les remarques pour l'améliorer sont les bienvenues.

Utilisation :
Vous allez instancier, dans votre procédure ou fonction, la classe clsStackTrace et ajouter votre procédure ainsi
que les paramètres si vous le souhaitez.

L'objet créé va récupérer ou créer l'objet singleton et lui demander d'ajouter la procédure dans la pile des appels.

Tant que votre procédure est en cours de traitement, elle est présente dans la piles des appels de l'objet singleton.
Il est assez difficile de savoir quand on sort d'une procédure (exit sub, erreur récupérée en amont, goto etc...), du coup, on laisse faire le garbage collector de VB décharger les objets. C'est pas top, mais ça a l'air de pas mal fonctionner.

Donc, en fin de procédure, l'objet (instance de clsStackTrace) va être déchargé par VB. Dans la procédure Class_Terminate de la classe clsStackTrace, on demande à l'objet singleton de retirer le nom de la procédure. En fait, on retire le dernier élément de la collection des appels.

Là, je ne suis pas sûr que cela soit toujours juste en cas de multi-threading par exemple mais je
n'ai pas creusé la question.

Au final, on génère une erreur et on demande d'afficher la pile des appels.

Conclusion :


Il y a deux tests, les erreurs ne sont pas générées au même niveau.

N'hésitez pas à donner des idées, meilleures, j'en suis sûr ;o) ou des précisions si je ne suis pas clair dans mes explications.

++

Moustachu

PS : L'idée d'utilisation d'un singleton pour réaliser un StackTrace a elle aussi été honteusement pompée d'un article lu sur le web dont j'ai oublié à peu près tout, sauf qu'il existe. Si quelqu'un le retrouve, j'aimerai bien savoir comment ils s'y sont pris.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.