如何正确使用__built_in_return_address

时间:2017-07-21 10:31:31

标签: gcc

我正在使用__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

但仍然不知道如何使用它而不会得到不受支持的警告警告。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

通常,对于大于__built_in_return_address的参数,最好避免使用0。在许多(大多数?)平台上,他们only work when code is compiled with -fno-omit-frame-pointer(以及其他人likely to segfault)。

作为替代方案,请尝试使用其中一个标准的回溯库,例如: libunwind或libbacktrace。