Je travaille sur un logiciel écrit en C et j'essaie de "profiler" son activité avec callgrind. Le logiciel se comporte ainsi : il démarre et ensuite il fork 1 ou plusieurs fils.
Donc pour utiliser valgrind j'utilise cette commande :
valgrind --trace-children=yes --tool=callgrind --dump-instr=yes src/foo -f foo.conf
Seulement le fichier généré par cette commande concerne uniquement le processus père, et ne m'intéresse pas. Donc j'utilise callgrind_control -d avec en argument le PID du processus fils (que j'ai repéré avec ps par exemple) pour générer un dump de l'activité du processus voulu.
Et là le comportement de callgrind_control m'interloque : il créé un dump sur une durée determinée je ne sais comment. le dump ne sera pas généré tant que mon processus n'aura pas atteint un certain niveau d'activité, et donc si mon processus consomme 100% de CPU, le dump va être généré quasiment immédiatement.
J'aimerai que le dump soit généré jusqu'à ce que mon processus fils aie terminé son exécution, et je ne sais pas si c'est possible avec callgrind.
Ou alors callgrind peut il générer un dump également pour les processus fils ?
Merci d'avance.
# re
Posté par riba . Évalué à 1.
valgrind --tool=callgrind --help
dit:
--callgrind-out-file= Output file name [callgrind.out.%p]
donc il doit sortir un fichier par processus
--separate-threads=yes doit aider aussi
Un bete:
valgrind --tool=callgrind --trace-children=yes --separate-threads=yes strace ls
me sort deja 4 fichiers!
Si tu connais pas, kcachegrind lit ces fichiers de facon plus user friendly.
[^] # Re: re
Posté par Axel . Évalué à 1.
Quand j'utilise valgrind sans callgrind_control, à la fin de l'exécution du programme 1 seul dump est généré et il ne contient que les informations du processus père et pas celles des processus fils.
[^] # Re: re
Posté par riba . Évalué à 1.
et ben met pas l'option.
Quand j'utilise valgrind sans callgrind_control, à la fin de l'exécution du programme 1 seul dump est généré et il ne contient que les informations du processus père et pas celles des processus fils.
Le test tout con strace ls ne te sort pas plusieurs dump???
Soit t'as pas fait le test, soit t'as pas la derniere version stable 3.5.0.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.