Valgrind
Framework de instrumentação dinâmica de binários, mais conhecido pela ferramenta Memcheck, que encontra erros de memória em C e C++. Escrito por Julian Seward a partir de 2002.
O programa roda dentro de um ambiente simulado, em que cada instrução é traduzida em tempo real e cada acesso à memória é verificado. O Memcheck detecta leitura de memória não inicializada, acessos fora das alocações, use-after-free, free duplo e vazamentos — com o stack trace do ponto em que a memória foi alocada. Outras ferramentas da suíte: Callgrind para profiling de chamadas, Cachegrind para o comportamento do cache, Massif para o uso do heap e Helgrind para condições de corrida entre threads. O preço é uma lentidão de 10 a 50 vezes. A grande vantagem sobre os sanitizers é que nada precisa ser recompilado: o Valgrind funciona num binário pronto, até sem o código-fonte.