我正在使用callgrind来分析一小段代码.Callgrind输出文件生成良好,其内容看起来不错,但我无法用kcachegrind打开它们:我收到以下错误消息:
无法打开文件"callgrind.out.4953".检查它是否存在,并且您有足够的权限来阅读它.
我对它们所在的文件和目录拥有所有权限,但具有相同的问题.此外,它适用于同一工作区中的其他文件夹中的其他项目.我还确切地说,在两种情况下进程都正确终止.
我最近向kcachegrind开发人员报告了一个完全相同症状的问题.当callgrind与很长的命令行一起使用时会触发该问题.这已在valgrind/callgrind和kcachegrind的下一个版本中修复.在下面找到valgrind端的提交日志.等待valgrind和kcachegrind的新版本,如果你的问题也是由于命令行太长,你可以只编辑文件并截断cmd:行.如果您的问题不是cmd行的长度,那么我猜您将需要使用callgrind_annotate(如果这项工作)或进一步调查为什么kcachegrind发现您的文件有问题.
作者:weidendo日期:2017年1月10日星期二20:21:21新版本:16196
日志:为callgrind文件添加格式标记
KCachegrind目前在实际加载文件之前使用快速格式检测,并在前2kB中检查以"events:"开头的行.这显然是脆弱的,如Philippe的内部错误报告所示:在"事件"行之前,Callgrind在命令行中添加了"cmd:"行.如果这很长,则检测失败,文件根本不会加载.
虽然KCachegrind根本不需要进行快速格式检查,但如果在某些时候支持多个输入格式过滤器,则自动选择正确的过滤器非常有用.
此外,对于"文件"命令,对于文件管理器和桌面环境,具有检测文件格式的独特方式是重要的.
为callgrind格式修复此问题还为时不晚.