Re: [Transformers] Code source parser

Bonjour, Akim Demaille wrote:
"VR" == Vincent Richomme <vrichomme@smartmobili.com> writes: [...]
Donc ce que je voudrais c'est un parser qui ajoute un frprintf par exemple pour logguer la fonction executée.
C'est une des fonctionnalités des langages à aspects. Il existe peut-être des outils pour faire de C à aspects.
MyFunc.c ---------
void myfunc(int aFoo) { ... }
Je voudrais que le parser ajoute une ligne du genre
void myfunc(int aFoo) { fprintf(stderr, "MyFunc.c::myfunc(int aFoo)"); ...
}
Bon ensuite j'imagine que vu le nombre de logs il faudrait pouvoir avoir une liste d'exclusion pour dire de ne pas logguer certains fonctions mais je n'en suis pas encore la.
Si c'est juste pour déboguer, et que vous utilisez toujours GCC pour compiler, jetter un coup d'oeil du côté de l'option -finstrument-functions et de __cyg_profile_func_enter() de GCC (Google donnera toutes les réponses ;) ). Certains projets tels que etrace les utilisent pour faire exactement ce que vous semblez vouloir faire, de manière non intrusive. -- Vincent Ordy

On Thu, 29 Jan 2009 22:03:11 +0100, Vincent Ordy <ordy@lrde.epita.fr> wrote:
Bonjour,
Akim Demaille wrote:
"VR" == Vincent Richomme <vrichomme@smartmobili.com> writes: [...]
Donc ce que je voudrais c'est un parser qui ajoute un frprintf par exemple pour logguer la fonction executée.
C'est une des fonctionnalités des langages à aspects. Il existe peut-être des outils pour faire de C à aspects.
MyFunc.c ---------
void myfunc(int aFoo) { ... }
Je voudrais que le parser ajoute une ligne du genre
void myfunc(int aFoo) { fprintf(stderr, "MyFunc.c::myfunc(int aFoo)"); ...
}
Bon ensuite j'imagine que vu le nombre de logs il faudrait pouvoir avoir une liste d'exclusion pour dire de ne pas logguer certains fonctions mais je n'en suis pas encore la.
Si c'est juste pour déboguer, et que vous utilisez toujours GCC pour compiler, jetter un coup d'oeil du côté de l'option -finstrument-functions et de __cyg_profile_func_enter() de GCC (Google donnera toutes les réponses ;) ).
Certains projets tels que etrace les utilisent pour faire exactement ce que vous semblez vouloir faire, de manière non intrusive.
Ok merci pour toutes ces informations. Mais finalement je crois que la première réponse d'Akim était la bonne, je ne pense plus non plus que ce soit la bonne façon de découvrir GCC. En tout cas merci pour les infos, je vais quand meme jeter un coup d'oeil, sinon de mon coté j'avais également vu qu'il etait possible d'utiliser le framework de compil. LLVM et son module clang. Il y a un exemple ou il transforme du code objective-C il me semble.
participants (2)
-
Vincent Ordy
-
vrichomme@smartmobili.com