Je voulais donner une perf à tirer un coup de profil certains programmes après avoir vu this parler de CppCon 2015. J'ai téléchargé la même bibliothèque de référence Google que le gars utilise dans la conversation, compilé mon programme avec les commutateurs appropriés , l'a lié à lui, puis utilisé perf pour enregistrer une course. L'option de rapport me donne ceci:Perf montre noms de fonctions mutilés
Comme vous pouvez voir les noms de fonction ne sont pas très lisibles. Je suppose que cela a à voir avec le mangling de nom C++. Fait intéressant, tous les noms de fonctions apparaissent correctement dans la vidéo pour le gars qui a donné la parole, mais pas pour moi. Je ne pense pas que les informations sur les symboles soient complètement manquantes car je ne verrais que les adresses mémoire dans ce cas. Pour une raison quelconque, perf ne peut pas "défaire" le nom C++ mangling pour moi, et c'est frustrant à regarder.
J'utilise gcc (g ++) La version 5.2.1, la version 4.2.6 est perf, et j'utilise ces commutateurs lors de la compilation:
-I<my own include path> -L<path to the benchmark library> -O3 -std=c++14 -gdwarf-2 -fno-rtti -Wall -pedantic -lbenchmark -pthread
La raison pour laquelle je ne me -fno-omit-frame-pointer
est que j'utilise l'option -gdwarf-2
à la place, ce qui laisse des informations de débogage dans l'exécutable nain, ce qui est une alternative pour laisser le pointeur de cadre en place dans ce cas. Cela signifie également que je passe --call-graph "dwarf"
à perf record
. Quoi qu'il en soit, j'ai aussi essayé la méthode du pointeur de trame, et cela donne les mêmes résultats, donc ça n'a pas vraiment d'importance.
Alors pourquoi ne pas "annuler" le nom C++ mangling dans ce cas? Cela a-t-il quelque chose à voir avec l'utilisation de GCC, ce qui signifie bien sûr que j'utilise libstdC++?
J'utilise Arch Linux et 'perf report' montre la démonétisation correcte des symboles. La page de manuel pour perf montre également qu'il existe une option '--demangle' qui est activée par défaut. Comme je ne vois pas le même comportement que vous, je n'ai pas de réponse, mais ce que vous voyez n'est pas un comportement par défaut attendu. –
J'ai essayé d'ajouter ce commutateur manuellement, mais cela n'a rien changé. – adam10603
@GabrielSouthern Utilisez-vous aussi gcc? – adam10603