Lister les variables

Lister les variables - C - Programmation

Marsh Posté le 28-05-2014 à 17:35:21    

Bonjour,
J'aimerais pouvoir exporter dans un fichier, les noms des variables, leur type (l'idéal serait le sizeof)  et la ligne dans le fichier.  
Est-ce possible?

Reply

Marsh Posté le 28-05-2014 à 17:35:21   

Reply

Marsh Posté le 28-05-2014 à 17:53:31    

le plus simple, c'est peut-être d'utiliser les fichiers de debug que ton compilateur va générer. Tu devrais pouvoir retrouver toutes ces infos dedans.
 
Si tu veux le faire à la main, il va falloir faire un système capable de parser du C et implémenter un préprocesseur, ca risque d'être fastidieux.
 
Accessoirement, aussi, pour vouloir exporter ces infos, j'imagine que c'est pour assister du debug, donc autant prendre directement ce que le compilateur en sait.


---------------
last.fm
Reply

Marsh Posté le 28-05-2014 à 17:59:06    

Justement je voudrais faire sans gcc-g et gdb.  
J'ai cherché dans les options de compilation, sans grand résultats  
Peut-etre qu'il existe un outil ?
 
Édit :je viens de relire ta réponse, je vais regarder du côté de-g voir si je peux exploiter les fichiers générer à différentes étapes


Message édité par djobidjoba le 28-05-2014 à 18:05:54
Reply

Marsh Posté le 28-05-2014 à 20:18:54    

alors avec gcc -g j'ai pas ete convaincu du truc. Bon je m'y suis p-e mal pris.
sinon j'ai testé plusieurs outils et j'ai finallement trouvé ce qu'il me faut :
https://github.com/chrisforbes/sparse
 
Sous cygwin j'ai recompilé le projet puis j'ai essayé tous les .exe generés.
 
test-dissect.exe est une  bonne base que je vais pouvoir modifier pour mes besoins.
 
exemple
 
le prog en c
 

Code :
  1. #define TAB_SIZE 20
  2. int main(int argc, char **argv)
  3. {
  4.         int nVar1,nVar2, nVar3;
  5.         unsigned char ucTest1;
  6.         ucTest1 = 'A';
  7.         nVar1=200;
  8.         unsigned char pucTest2[TAB_SIZE];
  9.         return 0;
  10. }

$ ./test-dissect.exe prog_test.c

Code :
  1. FILE: prog_test.c
  2.    3:5   g def  main                             int ( ... )
  3.    3:10  l def  argc                             int
  4.    3:20  l def  argv                             char **
  5.    5:13  l def  nVar1                            int
  6.    5:19  l def  nVar2                            int
  7.    5:26  l def  nVar3                            int
  8.    6:23  l def  ucTest1                          unsigned char
  9.    8:9   l -w-  ucTest1                          unsigned char
  10.   10:9   l -w-  nVar1                            int
  11.   12:23  l def  pucTest2                         unsigned char [20]


 
au passage j'ai trouve des outils sympa comme splint (http://www.splint.org/) pour analyser son code.

Reply

Sujets relatifs:

Leave a Replay

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