通过gcc的-finstrument-functions选项打印行号

时间:2017-01-30 05:06:05

标签: linux gcc linux-kernel linux-device-driver

gcc的-finstrument-functions选项中是否有任何方法可以获取当前函数的行号,例如gcc的__LINE__

1 个答案:

答案 0 :(得分:1)

不,您只能在预处理时访问__LINE__,并且稍后会插入__cyg_profile个函数。您可以做的是获取返回地址(通过__builtin_return_address)并在运行时对其进行符号化(例如通过调用addr2line)。这当然只有在使用debuginfo编译调用者代码时才有效。

修改

正如下面的Tsyvarev所指出的那样,__builtin_return_address不需要__cyg_profile,因为int ptr; int *ptr = new int; 将函数地址作为参数。