C · Avançado · Inglês · Técnico
UBSan
Undefined Behavior Sanitizer, ativado com -fsanitize=undefined, instrumenta o programa para acusar em tempo de execução overflow de inteiro com sinal, shifts inválidos, desreferência nula e outros comportamentos indefinidos.
Onde usar
Roda junto do AddressSanitizer em CI para pegar bugs que o compilador esconde. Imprime a linha e o tipo do problema, como 'signed integer overflow', em vez de falhar de forma misteriosa.
Em código
gcc -g -fsanitize=undefined -o prog main.c
./prog
# runtime error: signed integer overflowExemplos
UBSan caught a signed integer overflow in the hash function.
O UBSan pegou um overflow de inteiro com sinal na função de hash.
Build the tests with ASan and UBSan enabled.
Compile os testes com ASan e UBSan ligados.
Cuidado
Achar que um programa sem avisos do UBSan está livre de comportamento indefinido; ele só vê o que os testes executam.
Sinônimos
undefined behavior sanitizer