Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
valgrind [Le 22/11/2007, 22:54]
88.176.124.69 créée
valgrind [Le 01/09/2022, 00:07] (Version actuelle)
moths-art Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-Valgrind est une suite pour débeugguer ​des programmes et détecter des problèmes ​de mémoire.+{{tag>​Xenial programmation}} 
 +---- 
 + 
 + 
 +====== ​Valgrind ​======= 
 + 
 +**Valgrind** ​est une suite d'​outils de profilage et de débuggage mémoire sous licence GPL, qui permet de détecter des problèmes de gestion mémoire dans des programmes ​écrits en C / C++. Plus généralement,​ **Valgrind** repose sur une architecture générique permettant la supervisation de programmes à l'aide de 3 principaux outils : 
 + 
 +  * **Memcheck** : un détecteur de fuites mémoires (option par défaut) 
 +  * **Cachegrind** : un simulateur de caches 
 +  * **Callgrind** : un profileur 
 + 
 +La détection d'​erreurs fonctionne de cette manière : le programme doit être lancé dans l'​environnement de Valgrind. Toutes les entrées / sorties mémoires sont alors analysées ​et vérifiées minutieusement en interceptant tous les appels à (malloc|new) et (free|delete). 
 + 
 +<note importante>​ 
 +**Valgrind** n'est pas capable de détecter ​certaines anomalies liées au code. Par exemple, il ne permet pas de vérifier les indices hors tableau sur des tableaux déclarés en statique. 
 +</​note>​ 
 +  
 +===== Pré-requis ===== 
 +  
 +  * Disposer des [[:​sudo|droits d'​administration]]. 
 +  * Disposer d'une connexion à Internet configurée et activée. 
 + 
 +===== Installation ===== 
 + 
 +il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​valgrind]]**. 
 + 
 + 
 +===== Utilisation ===== 
 +Dans ce qui suit, on considère un programme C compilé avec l'​option -g, que l'on appelle **test**. Ouvrez un terminal et suivez les instructions ci-dessous selon l'​outil désiré. 
 + 
 +==== Détection ​de fuites mémoires ==== 
 +**memcheck** est un outil de détection de fuites mémoires appelé par défaut. Il recherche les zones mémoires qui ne sont plus pointées et qui n'ont pas été désallouées (comportement par défaut). 
 + 
 +Tapez par exemple la commande suivante pour lancer la détection d'​erreurs sur **test** : 
 + 
 +  valgrind --tool=memcheck --leak-check=yes|no|full|summary --leak-resolution=low|med|high --show-reachable=yes ./test 
 + 
 +où le paramètre `leak-check'​ peut prendre les valeurs suivantes : 
 +  * **no         :** ne fait rien. 
 +  * **full / yes :** donne des détails sur chaque fuite mémoire. 
 +  * **summary ​   :** indique le nombre de fuites mémoires. 
 + 
 +où le paramètre **show-reachable** étend la recherche aux zones encore pointées mais non désallouées. 
 + 
 +où le paramètre **leak-resolution** indique le niveau de recherche des fuites mémoires. 
 + 
 + 
 + 
 +==== Simulation de caches ==== 
 +L'​outil **cachegrind** est un simulateur de cache I1/D1/L2. Il est possible de spécifier manuellement la configuration du cache à simuler. Pour chaque cache, on indique sa taille, l'​associativité et la taille de la ligne. Les tailles doivent être données en octets. 
 + 
 +Tapez par exemple la commande suivante pour lancer la simulation de 3 caches sur **test** : 
 + 
 +  valgrind --tool=cachegrind --I1=65535,​2,​64 --D1=65535,​2,​64 --L2=65535,​2,​64 ./test 
 + 
 +==== Profilage ==== 
 +L'​outil **callgrind** permet d'​effectuer un profilage poussé du programme en comptabilisant le nombre d'​appels et les coûts associés. 
 + 
 +Tapez par exemple la commande suivante pour lancer le profilage sur **test** : 
 + 
 +  valgrind --tool=callgrind ./test 
 + 
 + 
 +===== Interfaces graphiques ===== 
 + 
 +  * [[apt>​Kcachegrind]] (dans les dépôts) permet de visualiser graphiquement les rapports de valgrind 
 + 
 +  * Il existe une extension qui permet d'​intégrer la plupart des outils valgrind (memcheck, massif, cachegrind, mais pas callgrind) dans eclipse. 
 + 
 +[[http://​www.eclipse.org/​linuxtools/​projectPages/​valgrind/​]] 
 + 
 +Rentrer l'​adresse [[http://​download.eclipse.org/​technology/​linuxtools/​update]] dans help/​software updates . 
 + 
 +  * [[apt>​Alleyoop]] (dans les dépôts) permet de visualiser graphiquement les rapports de valgrind, et aide à la correction. 
 + 
 +===== Désinstallation ===== 
 +  
 +Pour supprimer cette application,​ il suffit de [[:​tutoriel:​comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, la configuration globale de l'​application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés. 
 +  
 +===== Références ===== 
 +A titre informatif, voici quelques liens : 
 + 
 +  * Manuel **Valgrind** complet : [[https://​valgrind.org/​docs/​manual/​index.html]] 
 +  * Guide **Valgrind** de démarrage rapide : [[https://​valgrind.org/​docs/​manual/​QuickStart.html]] 
 +  * http://​www.siteduzero.com/​tutoriel-3-473022-debuguer-facilement-avec-valgrind.html 
 + 
 +---- 
 +//​Contributeurs:​ [[utilisateurs:​nicolas66]]//​
  • valgrind.1195768476.txt.gz
  • Dernière modification: Le 18/04/2011, 14:58
  • (modification externe)