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

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

有没有办法在gcc的-finstrument-functions选项中获取当前函数的行号,比如gcc的__LINE__

最佳答案

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

编辑

正如下面的 Tsyvarev 所指出的,__builtin_return_address 不是必需的,因为 __cyg_profile 获取函数地址作为参数。

关于linux - 通过 gcc 的 -finstrument-functions 选项打印行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41929308/

相关文章:

linux - tcpdump 的侵入性如何?

mysql - Drupal 不能安装在以默认设置运行的 MySQL 服务器上吗?

assembly - 为什么静态变量的地址是相对于指令指针的?

gcc - gcc 链接器映射文件的用途是什么?

windows - 我在哪里可以下载适用于 Windows 的 GCC 二进制文件?

mysql - 用于数据库备份的 Linux shell 脚本

python - 使用 python 通过套接字将字符串从 Windows 发送到 vmware-ubuntu

close() 系统调用需要很长时间才能完成

linux -/usr/src 目录是否与 Linux 内核的启动有任何关系?如果是,如何?

linux - Mesa-18.1.6 'c compiler cannot create executables'