5

我正在使用 callgrind 来分析一小段代码。Callgrind 输出文件生成良好,它们的内容看起来不错,但我无法使用 kcachegrind 打开它们:我收到以下错误消息:

无法打开文件“callgrind.out.4953”。检查它是否存在并且您有足够的权限来阅读它。

我对它们所在的文件和目录拥有所有权限,但有同样的问题。此外,它还可以与同一工作区中的其他文件夹中的其他项目一起使用。我还指出,在这两种情况下,进程都会正确终止。

4

1 回答 1

9

我最近向 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 的内部错误报告所示:在“events”行之前,Callgrind 在命令行中放置了一个“cmd:”行。如果这很长,则检测失败并且文件根本不会被加载。

虽然 KCachegrind 根本不需要这种快速的格式检查,但如果在某个时候支持多个输入格式过滤器,自动选择正确的过滤器会很有用。

此外,对于“文件”命令,对于文件管理器和桌面环境,具有检测文件格式的独特方法很重要。

现在为 callgrind 格式解决此问题还为时不晚。

于 2017-01-12T21:37:26.430 回答