gcc的编译特性使用__builtin_return_address(level)
打印出一个函数的堆栈地址。其中 level代表是堆栈中第几层调用地址,__builtin_return_address(0)
表示第一层调用地址,即当前函数,__builtin_return_address(1)
表示第二层。如代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
分别打印出函数f()和g() 的函数地址,我们通过objdump 出来的文件去查找打印出来的函数地址,这样就能看到调用的函数名了。