Je ne suis pas familier avec Application Verifier et pilote Verifier du tout ...
Pour les applications, Valgrind est très utile comme outil pour vérifier les fuites, sans utilisation ultérieure, double libre, dépassement de mémoire tampon , l'utilisation de données unitalisées, l'accès aux données simultanées non sécurisé et bien plus encore.
Il existe également de nombreux fuzzers (zzuf, fusil, etc.) qui testent la resiliance d'un programme d'entrée non valide.
GCC lui-même a -fstackprotector
, ce qui permet SSP (protecteur de pile-smashing, aka ProPolice); -fmudflap
, qui détecte une autre mauvaise utilisation de la mémoire; et (en conjonction avec glibc
) -D_FORTIFY_SOURCE=
n, ce qui ajoute un contrôle supplémentaire sur diverses fonctions de chaîne et de mémoire.
Dans le noyau Linux, il y a beaucoup de commutateurs de configuration sous le "noyau piratage" dans le menu:
CONFIG_DEBUG_SLAB
, CONFIG_DEBUG_PAGEALLOC
, etc., qui assurent que la mémoire est allouée, utilisé et libéré sanely
CONFIG_DEBUG_OBJECTS
, qui vérifie que les objets sont utilisés et libérés ordre
- kmemcheck, « Valgrind pour le noyau »
CONFIG_PROVE_LOCKING
, qui analyse pour tous les éventuels blocages
CONFIG_DEBUG_PREEMPT
, CONFIG_DEBUG_MUTEXES
, CONFIG_DEBUG_SPINLOCK
, CONFIG_DEBUG_SPINLOCK_SLEEP
, etc., qui avertissent sur une mauvaise utilisation du verrouillage
CONFIG_FAULT_INJECTION
& co., qui provoquent probabilistes échecs d'allocation de mémoire et d'E/S