Statcktrace : garder la trace de la pile d'appel

Soyez le premier à donner votre avis sur cette source.

Vue 7 431 fois - Téléchargée 209 fois

Description

Ce code est composé de 2 headers, et d'un ficher de test.
Il permet de pouvoir garder la trace de la pile d'appel courante.
Le multithreading est géré.
Cet outil nécéssite boost::thread et boost::shared_ptr (www.boost.org)
Est également inclu une classe permettant de faciliter la construction d'exceptions portant la trace.

singleton.h a été écrit suite a une discussion sur le forum hardware.fr :
http://forum.hardware.fr/hardwarefr/Programmation/sujet-55867-1.htm

Source / Exemple :


déclarations : (cf zip pour le code entier + exemple)
---------------------------

#ifdef _MSC_VER
#define st black::stack_trace black_stacktrace(__FUNCTION__) // __FUNCTION__ pour vc++, merci de me préciser celles des autres compilos
#endif
#define st_thr black::stack_trace::thread black_stacktrace_thread

namespace black
{

class stack_trace
{
public :
	struct thread
	{
		thread();
		virtual ~thread()
	};

	stack_trace(const std::string & func);
	virtual ~stack_trace();

	static std::string get();

	static std::string get(const boost::thread &t);
	
	class exception_helper
	{
	public :
		const std::string & stack_trace() const;
	};
};

}

Conclusion :


l'exemple me parait assez clair, si quelqu'un veut des informations supplémentaires, ou trouve une idée d'amélioration, un bug, qu'il n'hésite pas à me contacter.

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005

jpense en fait que mon design est tordu, vaudrait mieux mettre une classe porteuse du dictionnaire(std::map) avec des accesseurs en singleton, et laisser stack_trace et thread se contenter d'utiliser ses méthodes

qq1 en pense qqchose ?

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.