gcc的-finstrument-functions
选项中是否有任何方法可以获取当前函数的行号,例如gcc的__LINE__
。
答案 0 :(得分:1)
不,您只能在预处理时访问__LINE__
,并且稍后会插入__cyg_profile
个函数。您可以做的是获取返回地址(通过__builtin_return_address
)并在运行时对其进行符号化(例如通过调用addr2line
)。这当然只有在使用debuginfo编译调用者代码时才有效。
修改强>
正如下面的Tsyvarev所指出的那样,__builtin_return_address
不需要__cyg_profile
,因为int ptr;
int *ptr = new int;
将函数地址作为参数。