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