Карточка Middle Типы и неопределённое поведение обновлено

Как искать 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.

Разбор

Санитайзеры GCC и Clang: -fsanitize=undefined (переполнения, сдвиги, невыровненный доступ), -fsanitize=address (выход за границы, use-after-free), -fsanitize=thread (гонки). Плюс предупреждения -Wall -Wextra -Wconversion, статический анализ (clang-tidy) и Valgrind.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.