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

使用perf运行C++程序意外退出(返回码255)求助

问题分析与解决建议

核心结论

你的问题很大概率是/tmp空间不足导致perf异常,进而终止了被追踪的C++程序。

原因解析

  1. perf的工作逻辑:perf record会将采样的性能数据持续写入指定的输出文件(这里是/tmp/xxxperf)。当tmpfs完全占满时,perf无法继续写入数据,会触发IO错误,此时perf可能会向被追踪的进程(foo)发送终止信号,导致进程意外退出,返回码255正是进程被异常终止的典型表现。
  2. 清空/tmp后的现象印证:清空/tmp后有了足够的临时空间,perf可以正常写入数据直到空间再次耗尽,因此触发进程退出的时间会变长,完全符合空间不足导致的渐进式错误特征。

解决办法

  • 更换perf输出路径:将输出文件放到有足够剩余空间的分区,比如当前用户的主目录:
    perf record --freq=997 --call-graph dwarf -q -o ~/xxxperf foo
    
  • 扩容tmpfs:临时增大tmpfs的容量(重启后会恢复默认):
    sudo mount -o remount,size=10G /tmp
    
    如果需要永久修改,编辑/etc/fstab中tmpfs的挂载行,调整size参数后重新挂载。
  • 清理/tmp冗余文件:定期清理/tmp中不需要的临时文件,释放空间。

验证步骤

  • 运行perf命令时,实时监控/tmp的空间使用:
    watch df -h /tmp
    
    观察进程退出时是否刚好出现/tmp空间耗尽的情况。
  • 查看系统日志,确认是否有perf相关的IO错误:
    dmesg | grep -i perf
    journalctl -xe | grep -i "out of space"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:46:02