Je lance "perf" de la manière suivante:
perf record -a --call-graph -p some_pid
perf report --call-graph --stdio
Ensuite, je vois ceci:
1.60% my_binary my_binary [.] my_func
|
--- my_func
|
|--71.10%-- (nil)
| (nil)
|
--28.90%-- 0x17f310000000a
Je ne vois pas quelles fonctions appellent my_func (). Je vois "nil" et "0x17f310000000a" à la place. Est-ce que je fais quelque chose de mal? Ce n'est probablement pas un problème d'information de débogage car certains symboles sont affichés alors que d'autres ne le sont pas.
Plus d'informations:
Assurez-vous d’avoir compilé le code avec -fno-omit-frame-pointer
gcc option.
Vous y êtes presque, il manque l'option -G
(vous aurez peut-être besoin d'une performance plus récente que celle installée sur votre système):
$ perf report --call-graph --stdio -G
De perf help report
:
-G, --inverted
alias for inverted caller based call graph.
Avez-vous essayé de profiler avec Zoom ? Il peut utiliser perf, un pilote personnalisé ou un oprofile pour recueillir des échantillons. Si vous souhaitez simplement consulter un processus, essayez la configuration "Thread Time".
Je serais intéressé de savoir si l'une des options de Zoom est meilleure/différente pour obtenir les informations de fonction que la performance autonome.