You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

perf注解不显示源代码,已含符号与调试信息求助

解决perf注解仅显示汇编的问题

以下是针对该情况的排查和解决步骤:

  • 注解时明确指定目标二进制文件,避免perf关联到错误的可执行文件:

    perf annotate -d ./a.out --source
    
  • 强制clang生成兼容的DWARF调试格式,部分旧版本perf对DWARF5支持不佳,添加-gdwarf-4参数重新编译:

    clang -std=c89 -pedantic -gdwarf-4 \
          -Wno-attributes \
          -foptimize-sibling-calls \
          -fno-strict-aliasing \
          -DNDEBUG \
          *.c
    

    重新录制perf数据后再尝试注解操作。

  • 检查源码文件路径是否与编译时一致:perf需要读取编译时记录的源码文件位置,若源码被移动或删除,会无法显示源码。可通过readelf -w a.out查看调试信息中的源码路径,确认文件当前仍存在于该路径下。

  • 尝试在交互式perf report中切换源码显示:

    1. 运行perf report -d ./a.out
    2. 选中目标函数,按下a进入注解界面
    3. 按下s键切换显示源码+汇编模式,多次按s可在不同显示模式间切换
  • 临时降低优化等级测试,排除优化导致的源码映射丢失:
    编译时添加-O0关闭优化,去掉-foptimize-sibling-calls,重新编译录制后查看是否能显示源码:

    clang -std=c89 -pedantic -g \
          -Wno-attributes \
          -O0 \
          -fno-strict-aliasing \
          *.c
    

内容的提问来源于stack exchange,提问作者Jade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:05:43