我正在使用__built_in_return_address
进行调试as
__built_in_return_address(4);
__built_in_return_address(3);
__built_in_return_address(2);
__built_in_return_address(1);
编译器会抛出以下警告: 上述行的__built_in_return_address的参数不受支持。
作为我正在使用的临时解决方案
__built_in_return_address(0);
这成功编译但未被团队接受。
我搜索了这个: https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html
但仍然不知道如何使用它而不会得到不受支持的警告警告。
有人可以帮忙吗?
答案 0 :(得分:1)
通常,对于大于__built_in_return_address
的参数,最好避免使用0
。在许多(大多数?)平台上,他们only work when code is compiled with -fno-omit-frame-pointer(以及其他人likely to segfault)。
作为替代方案,请尝试使用其中一个标准的回溯库,例如: libunwind或libbacktrace。