Проверка Clang во время выполнения: печать обратной трассировки

Компилятор Clang предоставляет ряд полезных проверок во время выполнения, например, например. -fsanitize=unsigned-integer-overflow. Могу ли я распечатать обратную трассировку (например, используя gdb), если одна из проверок не прошла? В настоящее время я получаю точное местоположение проблемы, но у меня нет контекста. Как я мог получить больше информации от этих проверок во время выполнения, особенно обратная трассировка?

3

Решение

Более простым решением, которое не требует включения фатальных ошибок, является установка env. переменная UBSAN_OPTIONS=print_stacktrace=1,

1

Другие решения

Программу можно отменить, используя следующие флаги:

-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrap-function=abort

Последний параметр вызывает прерывание; Вы можете запустить программу в GDB и распечатать ее после завершения программы.

Источник — ответ на вопрос «Будут ли какие-либо программы обнаруживать переполнение буфера в структуре C / C ++?»

0

По вопросам рекламы [email protected]