web-dev-qa-db-fra.com

Qu'est-ce qu'un bon profileur facile à utiliser pour C ++ sous Linux?

J'ai besoin de profiler du code exécutant C++ sous Linux. Pouvez-vous recommander des profileurs?

74
shergill

Utilisez gprof.

Compilez simplement avec -pg flag (je pense (mais je ne suis pas sûr) que vous devez désactiver les optimisations.) et utiliser gprof pour analyser le fichier gmon.out que votre exécutable va ensuite produire.

par exemple:

gcc -pg -o whatever whatever.c

./whatever

gprof whatever gmon.out

Même chose avec g ++ et cpp.

36
smcameron

valgrind est un profileur Linux bien connu

24
dfa

Zoom depuis RotateRight ( http://www.rotateright.com ) est ce que j'utilise. Il a une vue papillon des fonctions et vous pouvez double-cliquer sur n'importe quelle fonction pour plonger dans le code source ou asm. Générez avec des informations de débogage (-g) pour voir votre source, mais vous devez toujours créer et profiler du code optimisé .

13
XWare

Je suis fan de Oprofile . Cela implique d'installer un module du noyau et a un peu de courbe d'apprentissage, mais il est assez puissant et fonctionne très bien pour les programmes/programmes optimisés sans symboles de débogage.

Vtune est un autre profileur très puissant fabriqué par Intel. Je crois que la version Linux est gratuite pour les logiciels non commerciaux.

Il y a aussi la suite Valgrind d'outils proposée par dfa. Callgrind serait probablement ce qui vous intéresse le plus. Cachegrind (dont l'ensemble de fonctionnalités est un sous-ensemble de Callgrind) et Massif sont également intéressants, mais je n'ai aucune expérience avec ce dernier.

12
Falaina

Jetez un œil à KCacheGrind qui est une interface graphique pour valgrind et le rend vraiment facile à utiliser.

5
Milan Babuškov

Google a également un profileur Nice dans le cadre des google-perftools - qui sont inclus dans Debian/Ubuntu et éventuellement d'autres distributions.

4
Dirk Eddelbuettel

Jetez un oeil à Sysprof . Votre distribution l'a probablement déjà disponible.

Notez que tous les profileurs mentionnés fonctionnent mieux si votre application est compilée avec des pointeurs de trame. Autrement dit, vous devez utiliser -fno-omit-frame-pointer sur la ligne de commande gcc.

2
Søren Sandmann

gprof est l'outil gnu standard pour le profilage.

2
twk
1
Mike Dunlavey