VT2020-Valgrind-Demo

From air
Jump to navigation Jump to search

Démonstration de Valgrind en lien avec la fiche de synthèse VT2020-Valgrind-Fiche dans le cadre du cours de veille technologique 2020.


Installation

Pour la démonstration il est impératif d'avoir installé GCC, Make Valgrind et Git. Si ce n'est pas fait, merci d'exécuter la commande suivante :

$ sudo apt-get install -y build-essential git valgrind

Démonstration

Les fichiers source sont disponibles sur GitHub.

Pour récupérer le projet, exécutez la commande suivante :

$ git clone git@github.com:Timmy7314/VT2020-Valgrind-demo.git
$ cd VT2020-Valgrind-demo

Compiler le projet

Avant de compiler le projet il est important d'exécuter la commande suivante :

$ make clean

Commande pour compiler le projet sans le flag pour debuguer:

$ make PROG=...

Commande pour compiler le projet avec le flag pour debuguer:

$ make DEBUG=1 PROG=...

Le paramètre PROG prend quatre valeurs différentes :

  • 1 : Version du code sans fuite mémoire et sans erreur
  • 2 : Version du code avec fuite mémoire et sans erreur
  • 3 : Version du code sans fuite mémoire et avec erreur
  • 4 : Version du code avec fuite mémoire et avec erreur

Tester Valgrind

Cas 1

Pour tester Valgrind sans erreur et sans fuite mémoire, exécutez :

$ make clean && make DEBUG=1 PROG=1
$ valgrind ./valgrind_test

Cas 2

Pour tester Valgrind sans erreur et avec fuite mémoire, exécutez :

$ make clean && make DEBUG=1 PROG=2
$ valgrind ./valgrind_test
$ valgrind --track-origins=yes --leak-check=full --verbose --show-leak-kinds=all ./valgrind_test

Signification des paramètres :

  • --leak-check=full : Pour afficher chaque fuite mémoire en détail.
  • --show-leak-kinds=all : Pour afficher tous les types de fuite mémoire (definite, indirect, possible, * reachable).
  • --track-origins=yes : Permet d'avoir la trace des variables non initialisées.

Cas 3

Pour tester Valgrind avec erreur et sans fuite mémoire, exécutez :

$ make clean && make DEBUG=1 PROG=3
$ valgrind ./valgrind_test

Cas 4

Pour tester Valgrind avec erreur et avec fuite mémoire, exécutez :

$ make clean && make DEBUG=1 PROG=4
$ valgrind --track-origins=yes --leak-check=full --verbose --show-leak-kinds=all ./valgrind_test