Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
valgrind [Le 17/08/2008, 05:32]
nicolas66
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:
-{{tag>dapper feisty gutsy hardy intrepid ​programmation}}+{{tag>Xenial ​programmation}}
 ---- ----
  
-====== Valgrid ======= 
  
 +====== 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
  
-===== Présentation ===== +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).
- +
-**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 outils : +
- +
-  * Un détecteur d'​erreurs mémoires +
-  * Un profileur sur temps d'​exécution +
-  * Un profileur sur la mémoire +
- +
-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 ​minitieusement ​en interceptant tous les appels à (malloc|new) et (free|delete).+
  
 <note importante>​ <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. **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>​ </​note>​
 + 
 ===== Pré-requis ===== ===== Pré-requis =====
-  * Avoir une connexion Internet fonctionnelle +  
-  * Avoir les [[depots#​universe_et_multiverse|dépôts Universe et Multiverse]] activés.+  * Disposer des [[:sudo|droits d'​administration]]
 +  * Disposer d'une connexion à Internet configurée et activée.
  
 ===== Installation ===== ===== Installation =====
-Il suffit d'​installer le paquet **[[apt://valgrind]]**.+ 
 +il suffit d'[[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>valgrind]]**. 
  
 ===== Utilisation ===== ===== Utilisation =====
-  - Ouvrez ​un terminal +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é.
-  - Tapez la commande suivante pour lancer la détection de fuites mémoires sur votre programme ​binaire ​**test**+
  
-  valgrind --tool=memcheck --leak-check=yes test+==== 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 ===== ===== Références =====
 A titre informatif, voici quelques liens : A titre informatif, voici quelques liens :
  
-  * Manuel **Valgrind** complet : [[http://​valgrind.org/​docs/​manual/​index.html]] +  * Manuel **Valgrind** complet : [[https://​valgrind.org/​docs/​manual/​index.html]] 
-  * Guide **Valgrind** de démarrage rapide : [[http://​valgrind.org/​docs/​manual/​QuickStart.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.1218943926.txt.gz
  • Dernière modification: Le 18/04/2011, 14:38
  • (modification externe)