begin process at 2012 05 27 13:51:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > BIBLIOTHÈQUE D'AIDE AU DÉBOGAGE VC++ 6.0

BIBLIOTHÈQUE D'AIDE AU DÉBOGAGE VC++ 6.0


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :debug, trace, log Niveau :Débutant Date de création :17/08/2002 Date de mise à jour :13/01/2007 00:08:29 Vu / téléchargé :4 204 / 99

Auteur : BaFM

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Permet un débogage avancé avec une fenêtre ou s'affichent les infos, une idexation de messages, l'affichage de quel module la envoyée, dans quel fonction on est, et dans quel classe, ... Permet d'enregistrer un fichier Log des messages.

ITrace : Permet d'envoyer le message.
LoadITrace : Permet de chargé la fenêtre affichant les messages.
UnloadITrace : Permet de décharger cette fenêtre.
EnableLogFile : Permet de définir ou de fermer un fichier log.

Autres définitions : voir code
Implémentation : voir zip
_TR = trace
_TFLR = trace avec fichier et ligne avant
F = fonction
M = membre
S = status
SM = membre statique

Dans vos définitions de classes, ajoutez la constante DECLARE_CLASS_ITRACE.
Dans le fichier d'implémentation des classes correspondantes, ajoutez IMPLEMENT_CLASS_ITRACE.
Dans les constructeurs, ajoutez, de façon à ce que ce soit appelé qu'une seule fois, INI_CLASS_ITRACE.
Dans les fonctions et méthodes, utilisez FUNCTION_ITRACE.
Dans votre module, placez, de façon à ce que tous les fichiers sources aie la visibilité des variables déclarées, la constante DECLARE_GLOBAL_ITRACE.
En un unique emplacement de votre module, dans un fichier d'implémentation, ajoutez IMPLEMENT_GLOBAL_ITRACE.

Toutes ces constantes prennent des paramètres, regardez les définitions pour savoir lesquels. Ils s'expliquent eux même.

Pour envoyer une trace, appelez ITrace avec comme premier paramètre votre message entourée de la constante _TR* ou _TFLR* correspondent à votre contexte et à votre envie de voir les numéros de ligne ou non. A part ce petit détail, la fonction s'utilise comme si vous utilisiez printf.

Je vous conseille d'activer le fichier de log en début de programme. Ce peux permettre de vouvoir le consulter même si le programme s'arrête brutalement. La fenêtre de log permet de voir les messages au fur et à mesure de leur arrivée.

Les fonctions sont thread-safe (je crois)

Source

  • #ifdef DEBUGTOOLS
  • #include "resource.h"
  • #define DEBUGTOOLS_API __declspec(dllexport)
  • #else
  • #define DEBUGTOOLS_API __declspec(dllimport)
  • #endif
  • #define INIT_CS(cs) InitializeCriticalSection(&cs);
  • #define EXIT_CS(cs) DeleteCriticalSection(&cs);
  • #define ENTER_CS(cs) EnterCriticalSection(&cs);
  • #define LEAVE_CS(cs) LeaveCriticalSection(&cs);
  • void DEBUGTOOLS_API LoadITrace();
  • void DEBUGTOOLS_API UnloadITrace();
  • #if defined(DEBUG)|defined(_DEBUG)
  • void DEBUGTOOLS_API ITrace(LPTSTR tcsMsg,...);
  • void DEBUGTOOLS_API EnableLogFile(bool bEnable, LPTSTR tcsName = NULL);
  • #define _TR(msg) "%s:\t%u\t"msg,gc_tcsModuleName,g_dwIndex++
  • #define _TRF(str) _TR("%s :\t"str),FN
  • #define _TRM(str) _TR("%s(%u)::%s :\t"str),CN,m_refIndex,FN
  • #define _TRS(str) _TR(str" de %s n°%u\n"),CN,m_refIndex
  • #define _TRSM(str) _TR("%s::%s :\t"str),CN,FN
  • #define _TFLR(msg) "%s(%ld): %u\t"msg,_T(__FILE__),(DWORD)__LINE__,g_dwIndex++
  • #define _TFLRF(str) _TFLR("%s :\t"str),FN
  • #define _TFLRM(str) _TFLR("%s(%u)::%s :\t"str),CN,m_refIndex,FN
  • #define _TFLRS(str) _TFLR(str" de %s n°%u\n"),CN,m_refIndex
  • #define _TFLRSM(str) _TFLR("%s::%s :\t"str),CN,FN
  • #define _REFINDEXOF(THIS) THIS->m_refIndex
  • #define DECLARE_GLOBAL_ITRACE() extern DWORD g_dwIndex;extern LPCTSTR gc_tcsModuleName;
  • #define IMPLEMENT_GLOBAL_ITRACE(ModuleName) DWORD g_dwIndex=0;LPCTSTR gc_tcsModuleName=ModuleName;
  • #define DECLARE_CLASS_ITRACE() \
  • private:\
  • static const TCHAR CN[];\
  • static DWORD ms_refIndex;\
  • DWORD m_refIndex;
  • #define IMPLEMENT_CLASS_ITRACE(ClassName,ClassString) \
  • const TCHAR ClassName::CN[]=_T(ClassString);\
  • DWORD ClassName::ms_refIndex=0;
  • #define INIT_CLASS_ITRACE() \
  • m_refIndex=ms_refIndex;\
  • ms_refIndex++;
  • #define FUNCTION_ITRACE(FunctionString) static const TCHAR FN[]=_T(FunctionString);
  • #else //defined(DEBUG)|defined(_DEBUG)
  • void DEBUGTOOLS_API ITrace(...);
  • void DEBUGTOOLS_API EnableLogFile(...);
  • #define _TR(msg) 0
  • #define _TRF(str) 0
  • #define _TRM(str) 0
  • #define _TRS(str) 0
  • #define _TRSM(str) 0
  • #define _TFLR(msg) 0
  • #define _TFLRF(str) 0
  • #define _TFLRM(str) 0
  • #define _TRFLS(str) 0
  • #define _TFLRSM(str) 0
  • #define _REFINDEXOF(THIS) 0
  • #define DECLARE_GLOBAL_ITRACE() extern LPCTSTR gc_tcsModuleName;
  • #define IMPLEMENT_GLOBAL_ITRACE(ModuleName) LPCTSTR gc_tcsModuleName=ModuleName;
  • #define DECLARE_CLASS_ITRACE()
  • #define IMPLEMENT_CLASS_ITRACE(ClassName,ClassString)
  • #define INIT_CLASS_ITRACE()
  • #define FUNCTION_ITRACE(FunctionString)
  • #endif//defined(DEBUG)|defined(_DEBUG)
#ifdef DEBUGTOOLS
#include "resource.h"
#define DEBUGTOOLS_API __declspec(dllexport)
#else
#define DEBUGTOOLS_API __declspec(dllimport)
#endif

#define INIT_CS(cs) InitializeCriticalSection(&cs);
#define EXIT_CS(cs) DeleteCriticalSection(&cs);
#define ENTER_CS(cs) EnterCriticalSection(&cs);
#define LEAVE_CS(cs) LeaveCriticalSection(&cs);
void DEBUGTOOLS_API LoadITrace();
void DEBUGTOOLS_API UnloadITrace();
#if defined(DEBUG)|defined(_DEBUG)
void DEBUGTOOLS_API ITrace(LPTSTR tcsMsg,...);
void DEBUGTOOLS_API EnableLogFile(bool bEnable, LPTSTR tcsName = NULL);
#define _TR(msg) "%s:\t%u\t"msg,gc_tcsModuleName,g_dwIndex++
#define _TRF(str) _TR("%s :\t"str),FN
#define _TRM(str) _TR("%s(%u)::%s :\t"str),CN,m_refIndex,FN
#define _TRS(str) _TR(str" de %s n°%u\n"),CN,m_refIndex
#define _TRSM(str) _TR("%s::%s :\t"str),CN,FN
#define _TFLR(msg) "%s(%ld): %u\t"msg,_T(__FILE__),(DWORD)__LINE__,g_dwIndex++
#define _TFLRF(str) _TFLR("%s :\t"str),FN
#define _TFLRM(str) _TFLR("%s(%u)::%s :\t"str),CN,m_refIndex,FN
#define _TFLRS(str) _TFLR(str" de %s n°%u\n"),CN,m_refIndex
#define _TFLRSM(str) _TFLR("%s::%s :\t"str),CN,FN

#define _REFINDEXOF(THIS) THIS->m_refIndex

#define DECLARE_GLOBAL_ITRACE() extern DWORD g_dwIndex;extern LPCTSTR gc_tcsModuleName;
#define IMPLEMENT_GLOBAL_ITRACE(ModuleName) DWORD g_dwIndex=0;LPCTSTR gc_tcsModuleName=ModuleName;
#define DECLARE_CLASS_ITRACE() \
	private:\
		static const TCHAR CN[];\
		static DWORD ms_refIndex;\
		DWORD m_refIndex;
#define IMPLEMENT_CLASS_ITRACE(ClassName,ClassString) \
	const TCHAR ClassName::CN[]=_T(ClassString);\
	DWORD ClassName::ms_refIndex=0;
#define INIT_CLASS_ITRACE() \
	m_refIndex=ms_refIndex;\
	ms_refIndex++;
#define FUNCTION_ITRACE(FunctionString) static const TCHAR FN[]=_T(FunctionString);
#else //defined(DEBUG)|defined(_DEBUG)
void DEBUGTOOLS_API ITrace(...);
void DEBUGTOOLS_API EnableLogFile(...);
#define _TR(msg) 0
#define _TRF(str) 0
#define _TRM(str) 0
#define _TRS(str) 0
#define _TRSM(str) 0
#define _TFLR(msg) 0
#define _TFLRF(str) 0
#define _TFLRM(str) 0
#define _TRFLS(str) 0
#define _TFLRSM(str) 0

#define _REFINDEXOF(THIS) 0

#define DECLARE_GLOBAL_ITRACE() extern LPCTSTR gc_tcsModuleName;
#define IMPLEMENT_GLOBAL_ITRACE(ModuleName) LPCTSTR gc_tcsModuleName=ModuleName;
#define DECLARE_CLASS_ITRACE()
#define IMPLEMENT_CLASS_ITRACE(ClassName,ClassString)
#define INIT_CLASS_ITRACE()
#define FUNCTION_ITRACE(FunctionString)
#endif//defined(DEBUG)|defined(_DEBUG)
  

 Conclusion

Langage = VC++ 6.0
Merci de laisser un commentaire...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

07 novembre 2004 18:22:17 :
Correction d'informations
13 janvier 2007 00:08:30 :
Clarification des informations d'utilisation.

 Sources du même auteur

Source avec Zip GESTIONNAIRE DE SERVER ET CLIENT DDE (DYNAMIC DATA EXCHANGE)
Source avec Zip COURS DE C++ FOURNI FAIT PAR UN PROFESSIONEL (PAS MOI)
Source avec Zip GESTION D'ICÔNE DU SYSTEM TRAY
Source avec Zip OUTILS DIRECTX

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

 Sources en rapport avec celle ci

CALCULE LOG(X) par tagtog
Source avec Zip CLASSE AVANCÉE DE LOG, THREAD SAFE ET DIVERSES SURCHARGES par sboli
Source avec Zip PING ET TRACE ROUTE D UN URL OU IP par f_l_a_s_h_b_a_c_k
Source avec une capture STACK WATCHER par lilxam7
Source avec Zip OUTPUTDEBUGSTRINGEX par kts_system

Commentaires et avis

Commentaire de wissis_19 le 11/01/2007 23:32:48

Est-ce qu'on peut débugger un processus qui tourne sur un PC ?
Quand ce processus plante (fenêtre classique de Windows "Envoyer" "Ne pas envoyer"), une segmentation fault, il y a moyen de le savoir ?

Commentaire de BaFM le 12/01/2007 23:55:16

Hum, je pense que vous n'avez pas compris le but de cette source.
Le but de cette source est surtout de permettre de fournir une trace précise de l'exécution d'un programme. Mais tout celà sous réserve que vous fassiez en sorte de générer ces traces en utilisant les macro adécquat. Il me semble que dans l'implémentation de base, la trace est envoyé à la fenêtre de sortie de Visual Studio.
Je mets à jour les commentaires d'utilisation.

Pour faire ce que vous voulez, il vous suffit d'un metteur au point, généralement intégré avec les environnement de développement.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Lire le log du debug [ par Slown ] Bonjour, dans le cadre de mon projet de stage je dois recuperer les informations du log du debuger windows afin de les traiter. Auriez vous une soluti Client UDP [ par doufdouf51 ] J'ai un probleme avec la fonction recvfrom() J'ai une application une en C# et dll en C++ qui communique en UDP. Les deux programme peuvent envoyer de Envoi de log (syslog) via le réseau en langage C/C++ [ par zaraki21 ] Bonjour, je travaille actuellement sur le développement d'une application en C/C++ sur un dispositif embarqué(noyau Linux avec Busybox). Cette applic SOS [C][Code] redefinition Trace(A1,A2,"text %d",i) en Trace("text %d",i) [ par SirZic ] Bonjour, Voici mon problème : je veux afficher des traces dans du code fournit par le constructeur du microP (ST). Les traces dans le code constructe debug,flag ou drapeau [ par badsha ] bonjour a tous je voudrai savoir comment utiliser un debug par exemple int flag=0; if (flag==0) { int a[3]; int b[4]={1,2,3}; for(i=0;i<4;i++) a[i] error PRJ0002 [ par aymen87 ] Bonjour Je suis en train de développer une dll en c sous Visual studio 2008. J'ai fait une dll de test (helloworld),le compilateur a fonctionné corre Problème avec memcpy et int [ par mickmick57 ] Bonjour, Je m'adresse à vous, car j'ai un problème avec la fonction memcpy et les entiers sur unix. On retrouve un bon nombre de foi le détail de la anlyseur de log [ par ensien86 ] Salut,j'ai besoin d'une methode qui analyse les differentes format des fichier log sous linux(si possible en C++)Merci a tous. fopen(...,"a") ne crée pas le fichier [ par guiltyspark ] jour,J'ai un problème avec fopen. Je l'utilise en mode append pour pouvoir créer le fichier s'il n'existe pas et écrire à la suite de celui-ci s'il ex Problemes avec l'importation du "msado15.idl" [ par khaliloenit ] Après avoir importé le fichier IDL "msado15.idl" dans le fichier IDL de ma DLL et la compilation, j'ai beaucoup d'erreurs comme ceci: 1>c:\sac\see_ac


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales