Projet C IG (1A)

IHM (2A)


VR/AR/Post-WIMP (3A)


Projet image (2A)


HCI (MoSIG 2)


Test Logiciel


Projects Docs

Utiliser les outils développeur dans CLion

Vous pouvez utiliser valgrind, address sanitizer, et perf directement depuis CLion. Valgrind et address sanitizer vous aident à débugger les erreurs difficile de mémoire (accès en dehors des limites, corruption mémoire, etc) et détecter les fuites mémoire (e.g. malloc non libéré). Perf vous permet de savoir quelles fonctions sont les plus coûteuses en temps de calcul.

Valgrind

Lancez votre programme avec "Run <nom du programme> with Valgrind Memcheck":

Il est conseillé d'utiliser valgrind en mode "Release" (optimisation -O3 du compilateur) plutôt que "Debug" (pas d'optimisation) car l'exécution sous valgrind est très lente.

A la fin de l'exécution du programme, consultez les messages valgrind:

Ici, on peut voir que la surface créée avec hw_create_window dans "minimal.c" n'est pas libérée par hw_surface_free (honte aux profs!), générant une fuite mémoire.
Vous pouvez ignorer toutes les erreurs qui concernent des fonctions que vous n'avez pas écrites.

Address sanitizer

Address sanitizer a le même rôle que valgrind, mais l'exécution du programme est bien plus rapide. Par contre certaines erreurs sont détectées par valgrind et pas par address sanitizer, et inversement. Il est donc utile de tester vos programmes avec ces 2 outils.

Address sanitizer s'utilise en ajoutant le flag -fsanitize=address à la compilation. C'est déjà prévu dans le fichier "CMakeLists.txt" qui vous est donné:

if(IG_ASAN)
	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -O1 -DIG_ASAN=1")
endif(IG_ASAN)

Pour activer cette directive, il faut activer le flag IG_ASAN pour l'exécution de cmake. Vous pouvez créer une nouvelle configuration cmake pour address sanitizer, en plus des configurations "Debug" et "Release".

Exécutez votre programme en utilisant cette nouvelle configuration "ASAN". A la fin de l'exécution, consultez les messages d'adresse sanitizer:

Ici, nous avons ajouté une instruction erronée red[4] = 255; dans "minimal.c". Address sanitizer détecte l'erreur et vous amène directement sur la ligne de code.

Perf

Perf regarde très fréquemment quelle est la fonction en cours d'exécution dans le programme. Après l'exécution, il affiche toutes les fonctions en les triant par le nombre de fois où il les a vues. Les fonction qui utilisent beaucoup le CPU apparaissent en premier.

A la fin de l'exécution de votre programme, vous pouvez consulter le résultat dans l'onglet de perf. Pensez à générer beaucoup d'événements (et donc de calculs) pendant l'exécution.

Edit - History - Upload - Print - Recent Changes - Search
Page last modified on May 14, 2025, at 09:29 AM