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

perf显示函数名过长被截断,如何获取完整函数名?

获取perf截断的完整函数名的方法

遇到过类似的perf函数名截断问题,给你几个实用的办法来拿到完整的函数签名:

  • 调整perf报告的输出宽度
    默认情况下perf会限制输出的列宽,导致长函数名被截断。你可以通过指定--width参数来扩大显示宽度,比如:

    perf report --width 200
    

    数值可以根据实际情况调整,足够大的话就能显示完整的函数名了。

  • 使用perf script导出完整调用栈
    perf script命令会输出未经过格式化的原始采样数据,其中的函数名不会被截断。你可以直接查看或者结合grep过滤目标片段:

    perf script | grep "std::__detail::_Map_base"
    

    这样就能看到完整的模板参数和函数名了。

  • 用addr2line解析函数地址
    如果perf报告里能看到该函数的内存地址,你可以借助addr2line工具(需要程序编译时带有-g调试信息)来解析完整函数名和源码位置:

    addr2line -e /path/to/your/executable <function_address>
    

    这个方法还能帮你定位到具体的代码行,方便进一步分析。

  • 确保编译时保留完整符号
    检查你的编译选项,避免使用-s或者strip命令剥离调试符号,同时建议加上-g生成调试信息,这样perf才能更准确地解析和显示函数名。

另外,从你给出的截断片段来看,这个函数大概率是std::equal_to<piece>相关的map内部比较函数,或者是map的find、insert等操作对应的底层方法,拿到完整函数名后就能对应到父函数里的具体map操作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:10:28