Как искать UB
Вопрос
Какие инструменты помогают найти неопределённое поведение?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
Ответ
Санитайзеры GCC и Clang: -fsanitize=undefined (переполнения, сдвиги, невыровненный доступ), -fsanitize=address (выход за границы, use-after-free), -fsanitize=thread (гонки). Плюс предупреждения -Wall -Wextra -Wconversion, статический анализ (clang-tidy) и Valgrind.
Разбор
Санитайзеры GCC и Clang: -fsanitize=undefined (переполнения, сдвиги, невыровненный доступ), -fsanitize=address (выход за границы, use-after-free), -fsanitize=thread (гонки). Плюс предупреждения -Wall -Wextra -Wconversion, статический анализ (clang-tidy) и Valgrind.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Типы и неопределённое поведение»
- Порядок байтов: перевернуть uint32 и посчитать единицы
- Умножение int64 с проверкой переполнения
- Середина двух int64 без переполнения
- std::bit_cast
- Что C++20 изменил для знаковых целых
- Порядок вычисления аргументов функции
- Объясни, что такое неопределённое поведение
- Продвижение unsigned char