Проверка Clang во время выполнения: печать обратной трассировки
Компилятор Clang предоставляет ряд полезных проверок во время выполнения, например, например -fsanitize=unsigned-integer-overflow
, Могу ли я распечатать обратную трассировку (например, используя gdb), если одна из проверок не пройдена? В настоящее время я получаю точное местоположение проблемы, но у меня нет контекста. Как я могу получить больше информации от этих проверок во время выполнения, особенно обратная трассировка?
2 ответа
Более простым решением, которое не требует включения фатальных ошибок, является установка env. переменная UBSAN_OPTIONS=print_stacktrace=1
,
Программу можно отменить, используя следующие флаги:
-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrap-function=abort
Последний параметр вызывает прерывание; Вы можете запустить программу в GDB и распечатать ее после завершения программы.
Источник - ответ на вопрос "Будут ли какие-либо программы обнаруживать переполнение буфера в структуре C/C++?"