Clang运行时检查:print backtrace

时间:2013-10-23 09:49:09

标签: c++ c runtime clang ubsan

Clang编译器提供了许多有用的运行时检查,例如-fsanitize=unsigned-integer-overflow。当其中一个检查失败时,我可以打印回溯(例如使用gdb)吗?目前我得到问题的确切位置,但我没有上下文。如何从这些运行时检查中获取更多信息,尤其是回溯?

2 个答案:

答案 0 :(得分:1)

一个不需要启用致命错误的简单解决方案是设置env。变量UBSAN_OPTIONS=print_stacktrace=1

答案 1 :(得分:0)

可以使用这些标志使程序中止:

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

最后一个选项会导致调用abort;您可以在GDB下运行该程序,并在程序中止后打印回溯。

来源 - answer to "Will any programs detect a buffer overflow within a C/C++ structure?"