Compartilhar via


Opções de runtime do AddressSanitizer

A tabela a seguir lista as opções para o AddressSanitizer. Habilite-os por meio da ASAN_OPTIONS variável de ambiente ou substituindo a __asan_default_options() função de usuário descrita aqui.

Observação

Essas descrições representam comportamentos específicos do MICROSOFT Visual C++ (MSVC), que podem variar de acordo com as opções de runtime do Clang.

Flag Valor padrão Description
abort_on_error false If true, ASan calls abort() instead of _exit() after printing the error report.
alloc_dealloc_mismatch false Detecta operações de memória incompatíveis, como malloc/delete, new[]/freee assim por diante.
allocator_frees_and_returns_null_on_realloc_zero true Se definido como true, realloc(p, 0) é o mesmo free(p) que por padrão (que é o mesmo que o padrão POSIX). Se definido como false, realloc(p, 0) retorna um ponteiro para um espaço alocado que não pode ser usado.
allocator_may_return_null false Se true, o alocador retornará nullptr quando estiver sem memória. Em vez de falhar, o ASan emite um aviso sobre a falha e a execução do alocador.
allow_user_poisoning true Se true, você poderá marcar manualmente as regiões de memória como envenenadas ou despojadas usando a interface de envenenamento do AddressSanitizer Manual.
check_initialization_order false Se true, tenta capturar problemas de ordem de inicialização.
continue_on_error 0 Permite que um aplicativo continue em execução enquanto relata erros de segurança de memória.
0 desabilitado.
Habilitado para 1; os erros são enviados para stdout.
Habilitado para 2; os erros são enviados para stderr.
Para obter mais informações, consulte continue_on_error.
detect_container_overflow true Se true, honrem as anotações de estouro do contêiner. Para obter mais informações, consulte ContainerOverflow.
detect_invalid_pointer_pairs false Iftrue, ASan detecta operações como<, , <=, >>=e - em pares de ponteiro inválidos, como ponteiros que pertencem a objetos diferentes.
detect_stack_use_after_return false Experimental. Se true, o ASan habilita a stack-use-after-return verificação no runtime. Requer /fsanitize-address-use-after-return. Para obter mais informações, consulte stack-use-after-return.
exitcode 1 Substitui o status de saída do programa com esse valor se o ASan encontrar um erro.
external_symbolizer_path "" Caminho para o simbolizador externo. Se estiver vazio, o ASan procurará $PATH o simbolizador.
fast_unwind_on_malloc true Se disponível, o ASan usará o desenrolador baseado em ponteiro de quadro rápido em malloc/free.
halt_on_error true Não há suporte. Use continue_on_error em seu lugar.
handle_segv true Se true, o ASan manipula SEGV erros.
handle_sigfpe true Se true, o ASan manipula SIGFPE erros.
handle_sigill true Se true, o ASan manipula SIGILL erros.
help false Se true, o ASan imprime as opções de sinalizador no console.
iat_overwrite error error - relata um erro sempre que um substituição é detectado.
protect – tenta evitar o uso da definição substituída.
ignore - não tenta corrigir nenhuma função substituída. Para obter mais informações, consulte iat_overwrite.
include_if_exists "" Lê as opções do arquivo especificado. O ASan não falhará se o arquivo não existir.
intercept_strpbrk true Se true, usa wrappers personalizados para strpbrk encontrar mais erros.
intercept_strspn true Se true, usa wrappers personalizados para strspn e strcspn para encontrar mais erros.
intercept_strstr true Se true, usa wrappers personalizados para strstr e strcasestr para encontrar mais erros.
malloc_context_size 1 Número máximo de quadros de pilha a serem mantidos para cada alocação/desalocação.
malloc_fill_byte 0xbe Valor usado para preencher memória alocada recentemente.
max_malloc_fill_size 4096 O alocador ASan preenche uma alocação com malloc_fill_byte até max_malloc_fill_size em uma chamada para malloc.
max_redzone 2048 Tamanho máximo (em bytes) de zonas vermelhas em torno de objetos heap.
new_delete_type_mismatch true Relatar erros de incompatibilidade entre o tamanho de new e delete. Para obter mais informações, consulte new-delete-type-mismatch.
poison_heap true Se true, envenene a memória do heap na alocação e na desalocação. false é útil para fazer o benchmarking do alocador ou instrumentador.
poison_partial true Se true, envenene palavras alinhadas parcialmente endereçáveis de 8 bytes. Esse sinalizador afeta buffers globais e heap, mas não buffers de pilha.
print_cmdline false Imprima a linha de comando em falha. Com continue_on_error set >= 1, imprime o diretório de trabalho atual e está UTF-16 ciente.
print_legend true Se true, imprima a legenda do mapa de memória de sombra para acompanhar o relatório do ASan.
print_stats false If true, print allocator stats after printing ASan report.
print_summary true Se false, desabilita a exibição de resumos de erros que acompanham relatórios de erro.
quarantine_size_mb -1 Tamanho (em Mb) da quarentena usada para detectar use-after-free erros. Um valor menor pode aumentar a chance de falsos negativos.
redzone 16 Tamanho mínimo (em bytes) de zonas vermelhas em torno de objetos heap. Requisito: redzone >= 16 e deve ser uma potência de dois.
replace_str true Se true, usa wrappers personalizados e substituições para libc funções de cadeia de caracteres para encontrar mais erros.
report_globals 1 Como responder ao estouro de buffer para globais:
0-não detecte estouro de buffer em globais.
1 – detectar estouro de buffer.
2 – detectar estouro de buffer e imprimir dados globais registrados.
sleep_before_dying 0 Número de segundos para suspensão entre imprimir um relatório de erro e encerrar o programa.
stack_trace_format DEFAULT Formatar cadeia de caracteres usada para renderizar quadros de pilha. DEFAULT - #%n %p %F %L. Lista de espaços reservados disponíveis:
%% - representa um '%' caractere
%n - número do quadro (cópia de frame_no)
%p - PC
%m – caminho para o módulo
%o - deslocamento no módulo
%f - nome da função
%q - se disponível, deslocamento na função
%s - caminho para o arquivo de origem
%l - linha no arquivo de origem
%c - coluna no arquivo de origem
%F - se a função for conhecida, o ASan imprimirá in <func name> seguido pelo deslocamento nessa função se a origem for desconhecida
%S - ASan imprime informações de arquivo/linha/coluna
%L - Se as informações do arquivo estiverem disponíveis, o ASan imprimirá o nome do arquivo, a linha e a coluna. Se as informações do módulo estiverem disponíveis, o ASan imprimirá o nome do módulo, o deslocamento e a arquitetura. Se nenhum dos dois estiver disponível, o ASan imprimirá (<unknown module>)
%M - Se conhecido, o ASan imprime o nome base e o deslocamento do módulo ou PC
strict_memcmp true Se true, pressupõe que memcmp(p1, p2, n) sempre lê n bytes antes de p1 comparar e p2.
strict_string_checks false Se true, verifique se os argumentos de cadeia de caracteres são corretamente encerrados em nulo.
strip_path_prefix "" Remove esse prefixo de caminhos de arquivo em relatórios de erro.
symbolize true Se true, use a llvm-symbolizer para transformar endereços virtuais em locais de arquivo ou linha.
symbolize_inline_frames true Imprima quadros embutidos em stacktraces.
verbosity 0 Nível de verbosidade:
0 – verbosidade padrão.
1 – mais saída.
2 – ainda mais saída.
3 – verbosidade máxima.
windows_fast_fail_on_error false Se true, o processo poderá ser encerrado com um __fastfail(71) após a impressão do relatório de erros. Para obter mais informações, consulte windows_fast_fail_on_error.
windows_hook_legacy_allocators true Se true, habilita o enganchamento de funções (Global/Local)().Alloc/Free/Size/ReAlloc/Lock/Unlock

Consulte também

Visão geral do AddressSanitizer
Problemas conhecidos do AddressSanitizer
Referência de build e linguagem do AddressSanitizer
Bytes de sombra do AddressSanitizer
Nuvem do AddressSanitizer ou teste distribuído
Integração do depurador addressSanitizer
Exemplos de erro addressSanitizer