C++ · Intermediário · Inglês · Técnico
AddressSanitizer
Ferramenta do GCC e do Clang, ativada com -fsanitize=address, que instrumenta o programa para detectar em tempo de execução acessos fora dos limites, uso após free e vazamentos.
Onde usar
Rodar os testes com ASan na CI pega bugs de memória que não derrubam o programa de imediato. O relatório mostra a pilha do acesso inválido e de onde veio a memória.
Em código
g++ -g -fsanitize=address main.cpp -o app
./app
# ERROR: AddressSanitizer:
# heap-buffer-overflow on address ...Exemplos
AddressSanitizer caught a heap buffer overflow in the parser.
O AddressSanitizer pegou um estouro de buffer no parser.
Build the tests with ASan enabled in CI.
Compile os testes com o ASan ligado na CI.
Cuidado
Deixa o programa mais lento e usa mais memória, então serve para desenvolvimento e testes, não para o binário de produção.
Sinônimos
ASan