Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Clang 编译器提供了许多有用的运行时检查,例如-fsanitize=unsigned-integer-overflow. 当其中一项检查失败时,我可以打印回溯(例如使用 gdb)吗?目前我得到了问题的确切位置,但我没有上下文。我怎样才能从这些运行时检查中获得更多信息,尤其是回溯?
-fsanitize=unsigned-integer-overflow
一个不需要启用致命错误的更简单的解决方案是设置 env. 变量UBSAN_OPTIONS=print_stacktrace=1。
UBSAN_OPTIONS=print_stacktrace=1
可以使用这些标志使程序中止:
-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrap-function=abort
最后一个选项导致调用 abort;您可以在 GDB 下运行程序并在程序中止后打印回溯。
来源 -回答“任何程序都会检测到 C/C++ 结构中的缓冲区溢出吗?”