Debugging avance maison : gestion du callstack et dumpage de la pile

Debugging avance maison : gestion du callstack et dumpage de la pile - C++ - Programmation

Marsh Posté le 18-12-2002 à 15:37:18    

Voila bon bref, j'essaye de me monter un systeme d'exception/error trappingn un peu couillu et j'aurais besoin de deux trucs que j'arrive pas a mettre en place :
 
1. Comment gérer une pile d'appel de fonctions ? A sabvoir lorsque une errreur est attrape, comment savoir dans quele fonction j'etais et d'ou je viens ?
 
2. dumpez le contenu binaire de la pile a un instant donné ?
 
Le tout sous Win32 et/ou le plus plateform free possible
merci :)
 
 

Reply

Marsh Posté le 18-12-2002 à 15:37:18   

Reply

Marsh Posté le 18-12-2002 à 15:57:35    

[citation=272190,1][nom]Joel F a écrit[/nom]Voila bon bref, j'essaye de me monter un systeme d'exception/error trappingn un peu couillu et j'aurais besoin de deux trucs que j'arrive pas a mettre en place :
 
1. Comment gérer une pile d'appel de fonctions ? A sabvoir lorsque une errreur est attrape, comment savoir dans quele fonction j'etais et d'ou je viens ?
 
2. dumpez le contenu binaire de la pile a un instant donné ?
[/quote]
 
tu prends l'adresse de la fonction courante et tu remontes par tranches de 32 bits.
Comme ta pile n'est pas structurée, t'es dans la merde pour savoir ce qu'il y a dedans. Bon courage
 

Reply

Marsh Posté le 18-12-2002 à 17:30:34    

Bref c pas gagner ...
Pour le call stack, en fait je gere une liste chaine de string contenant le nom de la fonction.
A chaque fonction je commence par
 

Code :
  1. void Classe::MaMethode()
  2. {
  3.    Logger::EnterMethod( "Classe::MaMethode" );
  4.    // faire semblant de travailler
  5.   Logger::LeaveMethod();
  6. }


 
En cas d'exception je sort un truc du style :
 

Code :
  1. try
  2. {
  3.    Classe maclasse;
  4.    maclasse.MaMethode();
  5. }
  6. catch( ... )
  7. {
  8.    Logger::Unwind()
  9.    cout << "Exception non traitée" << endl;
  10.    Logger::Dump();
  11. }


 
Mais bon pour la stack je vois pas, pourtant ya plein d'appli ki le font ...


Message édité par Joel F le 18-12-2002 à 17:31:00
Reply

Marsh Posté le 18-12-2002 à 18:32:25    

Joel F a écrit :

Bref c pas gagner ...
Pour le call stack, en fait je gere une liste chaine de string contenant le nom de la fonction.
A chaque fonction je commence par
 
 
 
Mais bon pour la stack je vois pas, pourtant ya plein d'appli ki le font ...
 


 
elles instrumentent la pile et utilisent un truc du processeur qui leur donne la main à chaque appel de fonction.
avec les info filée par le compilo (-g ou -g3) elles te donnent de l'info


Message édité par nraynaud le 18-12-2002 à 18:36:01
Reply

Sujets relatifs:

Leave a Replay

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