Traçabilité de l'exécution programme en C++

Fermé
olivier - 15 avril 2005 à 00:02
 SKZ - 16 avril 2005 à 19:23
Bonojur,
J'aimerais suivre le déroulement de l'excution d'un programme en C++, en créant un fichier trace par exemple au fur et à mesure des étapes par lesquelles il se déroule. Ensuite, à partir d'une trace, je désire etre capable de retouver la ligne de code correspondante.
Merci d'avance, Olivier.
A voir également:

2 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 avril 2005 à 00:21
Bon, je c pas si tu as vu, mais ya qqun d'autre qui a mis le même message au même moment... vous êtes dans la même chambre ?
ahgt, les petits coquin ;)

Bon, pour faire une trace de ton programme, c'est simple...ment long !
:)

Le truc c'est de marqué à l'écran des indications sur le lieu ou tu te trouve dans l'éxécution, l'affichage des vairables lorsque leur valeur lors subisse un grand changement. (avec une note relative à la variable)
Savoir ou on se trouve dans l'éxécution du programme consiste entre autre à afficher des message d'entrée et de sortie des fonctions appellée, mais aussi faire une gestion des erreurs pouvant survenir (avec par exemple des messages précisant les erreurs avant le retour de celles-ci).
Enfin bref, c'est à toi de faire ta sauce avec des ' cout "que cout faut qu'ca l'fasse\n" << endl; ' ou des ' cout << pipi << endl ' !

Bonne chance !

++
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 avril 2005 à 00:33
Argth !

J'avais pas vu, il faut daire des accès fichier :
pour ca t'a les fonctions d'entrée/sortie sur un fichier :

principe :
tu ouvre un fichier au début de ton programme, dans une classe que tu appelle fichier par exemple, avec des méthodes d'ouverture et de fermeture, des méthode d'écriture dans ce fichiers (qui prend en paramètre la chaine à écrire), etc., tu ouvre donc ece fichier en début de programme en créant un objet de cette classe, objet qui doit pouvoir être vu de tout ton programme pour poivoir y écrire les traces au fur et à mesure de l'éxécution, et enfin, à la fin du programme, ou en cas d'erreur qui met fin au prog tu ferme l'acces sur ce fichier.

Voili, voilou.

@+
0
Olivier > kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
15 avril 2005 à 13:57
Bonjour et merci de ta reponse, malheuresement ta solution ne me satisfais pas, je ne veux absolument pas toucher au source. Donc les cout et cin ne repondent pas a mon besoin. Voila j espere qu il y a une solution simple de tracabilite sans toucher au code.
Merci encore,Olivier.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > Olivier
15 avril 2005 à 13:59
Tu n'a pas les sources ?

Dans ce cas la il te faut décompiler ton prog, et puis apres... à toi de voir


++
0
Va falloir y toucher un peu, vu que je connais aucun compilo qui propose une option qui fait ça.


L'idée :
tu rajoute au début la macro :
#define DUMP dumpFile << __FILE__ << " " << __LINE__ << endl; 

Où dumpFile est un ostream sur le fichier de log. Les autres ligne à rajouter sont la déclaration du flux et l'ouverture du fichier.

Y'a même possibilité de définir une macro plus courte comme "_" à la place de "DUMP". Il suffit ensuite de recopier le nom de la macro au début, ou à la fin de chaque ligne à tracer (eventuellement, automatiquement avec un sed).
0