sanitizers (google/sanitizers)
Searching Database…
12.5K ·GitHub
Что это такое?
Семейство рантайм-проверок, которые ловят ошибки работы с памятью и гонки данных в коде на C и C++: AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer и другие. Этот репозиторий — архивный центр их документации.
Это инструмент, который я отсюда устанавливаю, или часть моего компилятора?
Часть вашего компилятора: основной код находится в репозитории LLVM (Clang), а GCC поставляет собственный порт, так что санитайзеры вы получаете вместе с тулчейнами вроде Clang, GCC, Xcode или Visual Studio.
Как мне начать пользоваться санитайзерами на своём коде?
Не через этот репозиторий — он сохранён только в архивных целях: историческая документация, исправления ошибок и вспомогательный код. Собирайте свою программу компилятором, в который входит нужный санитайзер.
Этот проект ещё активно поддерживается?
Нет — репозиторий архивирован и больше активно не поддерживается, новые сообщения об ошибках сюда отправлять не нужно.
Какие баги эти инструменты вообще умеют ловить?
AddressSanitizer находит проблемы с адресацией памяти, LeakSanitizer обнаруживает утечки памяти, ThreadSanitizer выявляет гонки данных и дедлоки в C++ и Go, MemorySanitizer ловит использование неинициализированной памяти, а UBSan указывает на неопределённое поведение.
Что такое HWASAN?
Hardware-assisted AddressSanitizer — более новая разновидность AddressSanitizer, которая опирается на аппаратную поддержку и потребляет заметно меньше памяти, чем классическая версия.
А есть санитайзеры для самого ядра Linux?
Да — KASAN, KMSAN и KCSAN приносят проверку в стиле AddressSanitizer, MemorySanitizer и ConcurrencySanitizer в ядро, и их документация тоже заархивирована здесь.
Если я наткнулся на баг санитайзера, куда о нём сообщать?
Не сюда: ошибки рантайма и инструментирования — в LLVM Bug Tracker, проблемы порта GCC — в GCC Bugzilla, ошибки санитайзеров ядра — в каналы ядра, а проблемы с Xcode, Visual Studio или Android NDK — в трекеры соответствующих вендоров.
What are similar projects?
darwin-xnu, porffor, scriptc, bpftrace, CalcKernel, llvm-project, coreclr, emscripten