Udostępnij przez


Opcje środowiska uruchomieniowego AddressSanitizer

W poniższej tabeli wymieniono opcje narzędzia AddressSanitizer. Włącz je za pośrednictwem zmiennej środowiskowej ASAN_OPTIONS lub przez zastąpienie __asan_default_options() funkcji użytkownika opisanej tutaj.

Uwaga / Notatka

Te opisy dotyczą zachowań specyficznych dla języka Microsoft Visual C++ (MSVC), które mogą różnić się od opcji środowiska uruchomieniowego języka Clang.

Flag Wartość domyślna Description
abort_on_error false Jeśli truepolecenie , ASan wywołuje abort() zamiast _exit() po wydrukowaniu raportu o błędach.
alloc_dealloc_mismatch false Wykrywa niezgodne operacje pamięci, takie jak malloc/delete, new[]/freei tak dalej.
allocator_frees_and_returns_null_on_realloc_zero true Jeśli jest ustawiona truewartość , realloc(p, 0) jest taka sama jak free(p) domyślnie (która jest taka sama jak w przypadku standardu POSIX). Jeśli ustawiono wartość false, realloc(p, 0) zwraca wskaźnik do przydzielonego miejsca, którego nie można użyć.
allocator_may_return_null false Jeśli truealokator zwraca nullptr wartość w przypadku braku pamięci. Zamiast ulegać awarii, ASan emituje ostrzeżenie o awarii alokatora i trwa wykonywanie.
allow_user_poisoning true Jeśli trueparametr , możesz ręcznie oznaczyć regiony pamięci jako zatrute lub niezatwierdzone przy użyciu interfejsu zatrucia Manual AddressSanitizer.
check_initialization_order false Jeśli trueprogram próbuje przechwycić problemy z kolejnością inicjowania.
continue_on_error 0 Umożliwia aplikacji kontynuowanie działania podczas raportowania błędów bezpieczeństwa pamięci.
0-wyłączone.
Włączone 1; błędy są wysyłane do usługi stdout.
2-włączone; błędy są wysyłane do usługi stderr.
Aby uzyskać więcej informacji, zobacz continue_on_error.
detect_container_overflow true W przypadku trueelementu należy przestrzegać adnotacji przepełnienia kontenera. Aby uzyskać więcej informacji, zobacz ContainerOverflow.
detect_invalid_pointer_pairs false Jeśli trueelement , ASan wykryje operacje, takie jak <, , <=>, >=i - w nieprawidłowych parach wskaźników, takich jak wskaźniki należące do różnych obiektów.
detect_stack_use_after_return false Eksperymentalny. Jeśli trueparametr , ASan włącza stack-use-after-return sprawdzanie w czasie wykonywania. Wymaga ./fsanitize-address-use-after-return Aby uzyskać więcej informacji, zobacz stack-use-after-return.
exitcode 1 Zastępuje stan zakończenia programu tą wartością, jeśli usługa ASan wykryje błąd.
external_symbolizer_path "" Ścieżka do symbolu zewnętrznego. Jeśli jest pusty, ASan wyszukuje $PATH symbol.
fast_unwind_on_malloc true Jeśli jest dostępna, usługa ASan używa szybkiego odwijacza opartego na wskaźnikach ramek w systemie malloc/free.
halt_on_error true Niewspierane. Użyj continue_on_error zamiast tego.
handle_segv true Jeśli trueusługa ASan obsługuje błędy SEGV .
handle_sigfpe true Jeśli trueusługa ASan obsługuje błędy SIGFPE .
handle_sigill true Jeśli trueusługa ASan obsługuje błędy SIGILL .
help false W przypadku trueusługi ASan opcje flagi są wyświetlane w konsoli programu .
iat_overwrite error error — zgłasza błąd za każdym razem, gdy zostanie wykryte zastąpienie.
protect — próbuje uniknąć używania zastąpionej definicji.
ignore — nie próbuje poprawić żadnych zastąpionych funkcji. Aby uzyskać więcej informacji, zobacz iat_overwrite.
include_if_exists "" Odczytuje opcje z określonego pliku. Usługa ASan nie kończy się niepowodzeniem, jeśli plik nie istnieje.
intercept_strpbrk true Jeśli trueprogram używa niestandardowych otoek, strpbrk aby znaleźć więcej błędów.
intercept_strspn true Jeśli trueprogram używa niestandardowych otoek dla strspn elementu i strcspn w celu znalezienia większej liczby błędów.
intercept_strstr true Jeśli trueprogram używa niestandardowych otoek dla strstr elementu i strcasestr w celu znalezienia większej liczby błędów.
malloc_context_size 1 Maksymalna liczba ramek stosu do zachowania dla każdej alokacji/przydziału.
malloc_fill_byte 0xbe Wartość używana do wypełnienia nowo przydzielonej pamięci.
max_malloc_fill_size 4096 ASan alokator wypełnia alokację malloc_fill_byte maksymalnie do max_malloc_fill_size wywołania metody malloc.
max_redzone 2048 Maksymalny rozmiar (w bajtach) redzone wokół obiektów sterty.
new_delete_type_mismatch true Zgłoś błędy dotyczące niezgodności między rozmiarem i newdelete. Aby uzyskać więcej informacji, zobacz new-delete-type-mismatch.
poison_heap true Jeśli true, zatruj pamięć sterty na alokacji i cofanie alokacji. false jest przydatny do porównywania alokatora lub instrumentatora.
poison_partial true Jeśli true, zatruj częściowo adresowalne 8 bajtów wyrównane wyrazy. Ta flaga wpływa na stertę i globalne, ale nie stosu.
print_cmdline false Wydrukuj wiersz polecenia po awarii. Po continue_on_error ustawieniu >= 1 wyświetla bieżący katalog roboczy i jest UTF-16 świadomy.
print_legend true Jeśli true, wyświetl legendę mapy pamięci w tle, aby towarzyszyć raportowi ASan.
print_stats false Jeśli true, wydrukuj statystyki alokatora po wydrukowaniu raportu ASan.
print_summary true Jeśli falseprogram wyłączy wyświetlanie podsumowań błędów towarzyszących raportom o błędach.
quarantine_size_mb -1 Rozmiar (w mb) kwarantanny używany do wykrywania use-after-free błędów. Niższa wartość może zwiększyć prawdopodobieństwo fałszywie ujemnych wartości.
redzone 16 Minimalny rozmiar (w bajtach) redzone wokół obiektów sterty. Wymaganie: redzone >= 16 i musi być mocą dwóch.
replace_str true Jeśli trueprogram używa niestandardowych otoek i zamian dla libc funkcji ciągów, aby znaleźć więcej błędów.
report_globals 1 Jak reagować na przepełnienie buforu dla globalnych:
0 — nie wykrywaj przepełnienia buforu na globalne.
1 — wykrywanie przepełnienia buforu.
2 — wykrywanie przepełnienia buforu i drukowanie zarejestrowanych danych globalnych.
sleep_before_dying 0 Liczba sekund uśpienia między drukowaniem raportu o błędach a kończeniem programu.
stack_trace_format DEFAULT Formatowanie ciągu używanego do renderowania ramek stosu. DEFAULT - #%n %p %F %L. Lista dostępnych symboli zastępczych:
%% - reprezentuje '%' znak
%n - numer ramki (kopia frame_no)
%p - PC
%m - ścieżka do modułu
%o - przesunięcie w module
%f - nazwa funkcji
%q - jeśli jest dostępna, przesunięcie w funkcji
%s - ścieżka do pliku źródłowego
%l - wiersz w pliku źródłowym
%c — kolumna w pliku źródłowym
%F - jeśli funkcja jest znana, ASan drukuje in <func name> po nim przesunięcie w tej funkcji, jeśli źródło jest nieznane
%S - ASan drukuje plik/wiersz/informacje o kolumnie
%L — Jeśli informacje o pliku są dostępne, usługa ASan drukuje nazwę pliku, wiersz i kolumnę. Jeśli informacje o module są dostępne, usługa ASan wyświetla nazwę modułu, przesunięcie i architekturę. Jeśli żadna z nich nie jest dostępna, usługa ASan drukuje (<unknown module>)
%M - Jeśli jest znany, ASan drukuje nazwę podstawową modułu i przesunięcie, lub PC
strict_memcmp true Jeśli trueprogram zakłada, że memcmp(p1, p2, n) zawsze odczytuje bajty n przed porównaniem p1 i p2.
strict_string_checks false Jeśli trueprogram sprawdza, czy argumenty ciągu są poprawnie zakończone o wartości null.
strip_path_prefix "" Usuwa ten prefiks ze ścieżek plików w raportach o błędach.
symbolize true Jeśli trueużyj polecenia llvm-symbolizer , aby przekształcić adresy wirtualne w lokalizacje plików lub wierszy.
symbolize_inline_frames true Drukuj wznawiane ramki w stosach.
verbosity 0 Poziom szczegółowości:
0 — domyślna szczegółowość.
1 — więcej danych wyjściowych.
2 — jeszcze więcej danych wyjściowych.
3 — maksymalna szczegółowość.
windows_fast_fail_on_error false Jeśli trueproces może zakończyć się __fastfail(71) po wydrukowaniu raportu o błędach. Aby uzyskać więcej informacji, zobacz windows_fast_fail_on_error.
windows_hook_legacy_allocators true Jeśli trueparametr umożliwia łączenie funkcji (Global/Local)().Alloc/Free/Size/ReAlloc/Lock/Unlock

Zobacz także

AddressSanitizer — omówienie
Rozwiązywanie znanych problemów z programemSanitizer
Dokumentacja języka i kompilacji narzędzia AddressSanitizer
Bajty w tle addressSanitizer
AddressSanitizer — chmura lub testowanie rozproszone
Integracja debugera AddressSanitizer
Przykłady błędów addressSanitizer