2011-06-08 3 views
8

J'ai un gros programme à exécuter. Utiliser valgrind prend des heures et des heures pour fonctionner. J'ai entendu qu'il y a quelque chose où nous pouvons appeler valgrind pour une fonction spécifique dans le programme. Et le reste du programme sera exécuté normalement (sans valgrind env). Quelqu'un peut-il m'aider avec cela. J'ai essayé de le chercher sur internet, Peut-être que je manque le terme à rechercher.Restreindre Valgrind à une fonction spécifique

Répondre

8

Tout dépend de quel outil vous êtes désireux d'utiliser. Pour callgrind (le profileur dans valgrind) il y a une option --toggle-collect = function pour vous permettre de collecter des informations dans une fonction particulière et tous ses enfants.

Toutefois, si l'outil qui vous intéresse est memcheck (pour la capture des fuites/erreurs de mémoire), aucune option de ligne de commande n'est disponible.

1

recherche sur Google « profil valgrind fonction spécifique que » et aller « Je me sens chanceux »

En plus de permettre l'instrumentation, vous devez également activer la collecte d'événements pour les parties de votre programme qui vous intéresse. Par par défaut, la collecte d'événements est activée partout. Vous pouvez limiter la collecte à une fonction spécifique en utilisant la fonction --toggle-collect =. Cela va basculer l'état de la collection à l'entrée et à la sortie des fonctions spécifiées. Lorsque cette option est activée, l'état de collecte par défaut au démarrage du programme est "désactivé". Seuls les événements se produisant en cours d'exécution à l'intérieur de la fonction donnée seront collectés. Les appels récursifs de la fonction donnée ne déclenchent aucune action.

Plus here

+2

Cela vient de la documentation ** callgrind **, qui est un outil qui fonctionne sous valgrind. Cependant, je suppose que la question portait sur memcheck, qui est l'outil le plus commun de valgrind. Je ne pense pas qu'il y ait quelque chose comme ça pour memcheck. – mark4o

Questions connexes