Partilhar via


Opções de tempo de execução do AddressSanitizer

A tabela a seguir lista as opções para o AddressSanitizer. Habilite-os através 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 levam em conta comportamentos específicos do Microsoft Visual C++ (MSVC), que podem variar das opções de tempo de execução do Clang.

Flag Valor predefinido Description
abort_on_error false Se true, ASan chama abort() em vez de depois de imprimir o relatório de _exit() erros.
alloc_dealloc_mismatch false Deteta 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 retorna nullptr quando falta memória. Em vez de falhar, o ASan emite um aviso sobre a falha do alocador e a execução continua.
allow_user_poisoning true Se true, você pode marcar manualmente regiões de memória como envenenadas ou não envenenadas usando a interface de envenenamento Manual AddressSanitizer.
check_initialization_order false Se true, tenta detetar 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-desativado.
1-habilitado; Os erros são enviados para stdout.
2-habilitado; Os erros são enviados para stderr.
Para obter mais informações, consulte continue_on_error.
detect_container_overflow true Se true, honre as anotações de estouro do contêiner. Para obter mais informações, consulte ContainerOverflow.
detect_invalid_pointer_pairs false Se trueo ASan detetar operações como <, <=, >, >=, e - em pares de ponteiros inválidos, como ponteiros que pertencem a objetos diferentes.
detect_stack_use_after_return false Experimental. Se true, o ASan habilita stack-use-after-return a verificação em tempo de execução. 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, ASan procura $PATH o simbolizador.
fast_unwind_on_malloc true Se disponível, o ASan usa o desenrolador rápido baseado em ponteiro de quadro no malloc/free.
halt_on_error true Não suportado. Utilize continue_on_error em substituição.
handle_segv true Se true, ASan lida com SEGV erros.
handle_sigfpe true Se true, ASan lida com SIGFPE erros.
handle_sigill true Se true, ASan lida com 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 uma substituição é detetada.
protect - tenta evitar o uso da definição sobrescrita.
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 If 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 manter para cada alocação/deslocalização.
malloc_fill_byte 0xbe Valor usado para preencher a memória recém-alocada.
max_malloc_fill_size 4096 O alocador ASan preenche uma alocação com malloc_fill_byte até max_malloc_fill_size uma chamada para malloc.
max_redzone 2048 Tamanho máximo (em bytes) de redzones em torno de objetos de pilha.
new_delete_type_mismatch true Comunicar erros sobre 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 de pilha na alocação e deslocalização. false é útil para aferir o alocador ou instrumentador.
poison_partial true Se true, envenene palavras alinhadas de 8 bytes parcialmente endereçáveis. Esse sinalizador afeta buffers globais e de heap, mas não buffers de pilha.
print_cmdline false Imprima a linha de comando em caso de 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 ASan.
print_stats false Se true, imprima as estatísticas do alocador depois de imprimir o relatório ASan.
print_summary true Se false, desativa a exibição de resumos de erros que acompanham os relatórios de erros.
quarantine_size_mb -1 Tamanho (em Mb) da quarentena usada para detetar use-after-free erros. Um valor mais baixo pode aumentar a probabilidade de falsos negativos.
redzone 16 Tamanho mínimo (em bytes) de redzones em torno de objetos de pilha. Requisito: redzone >= 16 e deve ser um poder de dois.
replace_str true If 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 deteta estouro de buffer em globais.
1 - detetar estouro de buffer.
2 - detetar estouro de buffer e imprimir dados globais registrados.
sleep_before_dying 0 Número de segundos de suspensão entre a impressão de um relatório de erros e o encerramento do 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 '%' personagem
%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 ficheiro de origem
%c - coluna no ficheiro de origem
%F - se a função for conhecida, ASan imprime in <func name> seguido do deslocamento nesta função se a fonte 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, o deslocamento e a arquitetura do módulo. Se nenhum dos dois estiver disponível, o ASan imprime (<unknown module>)
%M - Se conhecido, o ASan imprime o nome base do módulo e o deslocamento, ou PC
strict_memcmp true Se true, assume que memcmp(p1, p2, n) sempre lê bytes antes de n comparar p1 e p2.
strict_string_checks false Se true, verifica se os argumentos de cadeia de caracteres são terminados corretamente em nulo.
strip_path_prefix "" Remove esse prefixo dos caminhos de arquivo em relatórios de erros.
symbolize true Se true, use o llvm-symbolizer para transformar endereços virtuais em locais de arquivo ou linha.
symbolize_inline_frames true Imprima molduras embutidas 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 pode terminar com um após a impressão do relatório de __fastfail(71) erros. Para obter mais informações, consulte windows_fast_fail_on_error.
windows_hook_legacy_allocators true Se true, habilita a conexão de funções (Global/Local)().Alloc/Free/Size/ReAlloc/Lock/Unlock

Consulte também

Visão geral do AddressSanitizer
Problemas conhecidos do AddressSanitizer
Compilação e referência de linguagem AddressSanitizer
AddressSanitizer shadow bytes
AddressSanitizer nuvem ou testes distribuídos
Integração do depurador AddressSanitizer
Exemplos de erro AddressSanitizer