Comment installer GCC sur Debian 12 ?

Sur Debian 12 : sudo apt update && sudo apt install build-essential

Ce méta-paquet installe GCC, G++, make et les en-têtes système. Vérifiez avec gcc --version.

Qu'est-ce que Valgrind et comment l'utiliser ?

Valgrind détecte les fuites mémoire, les lectures/écritures invalides et les use-after-free.

Installation : sudo apt install valgrind
Usage : valgrind --leak-check=full --track-origins=yes ./mon_programme

Note : Valgrind ralentit l'exécution d'environ 20×.

Qu'est-ce qu'AddressSanitizer (ASan) ?

AddressSanitizer est un runtime checker compilé via GCC. Il détecte les débordements de tampon, les use-after-free et les erreurs de stack.

gcc -fsanitize=address -g fichier.c -o prog

Il est environ 2× plus rapide que Valgrind et indique précisément le numéro de ligne des erreurs.

Comment activer UBSan (Undefined Behavior Sanitizer) ?

UBSan détecte les undefined behaviors : overflow entier signé, shift hors limites, déréférence NULL.

Compilation : gcc -fsanitize=undefined -g fichier.c

Combiné avec ASan : gcc -fsanitize=address,undefined -g

Le programme s'arrête dès qu'un UB est détecté avec un message explicite.

Comment déboguer avec GDB sur Debian 12 ?

Installation : sudo apt install gdb. Compilez avec -g : gcc -g -o mon_prog fichier.c

Lancement : gdb ./mon_prog

Commandes : run, break main, next/step, print var, backtrace, quit.

Comment mesurer la couverture de code en C ?

GCC inclut gcov. Compilez avec :

gcc -fprofile-arcs -ftest-coverage -O0 -g fichier.c

Exécutez, puis : gcov fichier.c. Rapport HTML avec lcov :

sudo apt install lcov
lcov --capture --directory . --output-file cov.info
genhtml cov.info --output-directory html_cov/