kcachegrind 的控制台替代品?

Posted

技术标签:

【中文标题】kcachegrind 的控制台替代品?【英文标题】:Console alternative of kcachegrind? 【发布时间】:2010-11-25 21:50:13 【问题描述】:

Kcachegrind 非常棒,它是我最喜欢的工具之一,但有时我会失去在远程服务器上的终端(例如使用 ssh)中运行它的能力。

我知道设置 VNC 或 X-server 转发是可能的,但它非常笨拙,而我需要一些简单的东西。

是否有任何 kcachegrind 控制台替代方案(例如基于 ncurses)?

【问题讨论】:

【参考方案1】:

您可以使用命令行实用程序 callgrind_annotate 从 callgrind 输出文件(由valgrind --tool=callgrind 创建)中获取基本信息和注释。 (manual pagesection in docs)。对于由 cachegrind (valgrind --tool=cachegrind) 生成的文件,您可以使用 cg_annotate (section in docs)。这些实用程序默认使用 valgrind 本身构建。

另一种方法是将程序和缓存/callgrind 输出文件复制到您的机器上,然后像往常一样使用本地 kcachegrind 分析它们。但是如果你的机器没有unix但有windows或者你在不兼容的arch上运行(kcachegrind可以调用本地objdump获取程序信息),这种方式可能会很困难。

我还想向 valgrind 推荐命令行选项:

 valgrind --tool=cachegrind --branch-sim=yes 
 valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes

您还可以使用 --I1=32768,8,64 --D1=32768,8,64 --L2=3145728,12,64 为 cachegrind 指定缓存大小

【讨论】:

【参考方案2】:

使用SSHFS 挂载您正在使用的远程目录(参见例如SSHFS installation instructions for Ubuntu)。

然后只需 ssh 进入并使用远程目录中所需的任何选项运行 valgrind --tool=callgrind。由于您在本地安装了该目录,因此使用 KCacheGrind 打开数据文件就像在本地调试一样容易。

【讨论】:

Cachegrind 文件可能会变得很大,高达数百 MB。真的不建议对大文件执行此操作,因为 kcachegrind 会一次读取整个文件,即使在快速连接上也需要几分钟。【参考方案3】:

webgrind 是一个用 php 编写的 Web 前端,用于解析 XDebug 的输出(使用与 callgrind 相同的格式)。

【讨论】:

"它实现了 kcachegrind 功能的一个子集"。所以,例如汇编器输出将无法通过 webgrind 访问【参考方案4】:

在远程主机上运行 Valgrind/Callgrind 似乎是一个不错的选择。或者,您可以将 Valgrind 或 Callgrind 的输出 scp 到您的 PC 并在其上运行 KCachegrind。

如果您使用 Emacs,您可以在远程主机上启动它并按照here 所示操作,这将为您提供一个用于 valgrind 工具的 Emacs 式前端。

【讨论】:

【参考方案5】:

kcachegrind 在其帮助中声明它是 cachegrind 和 callgrind 的前端。

cachegrind 和 callgrind 是 valgrind 最新版本 (3.5) 的一部分。所以,从http://valgrind.org/downloads/current.html#current 下载 valgrind 并构建它。运行 valgrind --help,它会告诉你如何使用 callgrind 功能。

要了解更多信息,我需要知道你想做什么。

【讨论】:

我认为您并没有真正阅读过这个问题。我需要的是一个基于 ncurses 的 callgrind/cachegrind 前端。 答案是 valgrind。有关如何使用 valgrind 的说明,请运行 valgrind --help。 你错了,答案不是valgrind。 Valgrind 只执行run and collect information 步骤,而不是 view the result 用于 callgrind 和 cachegrind @ThorstenStaerk,非常清楚,valgrind 的输出(在 callgrind 或 cachegrind 模式下)不是特别易于人类阅读。 kcachegrind 不仅运行该工具,它还解释结果——这对于实际使用所述结果的能力是必不可少的。这是一个基于诅咒的工具,可帮助此处请求进行此类解释。

以上是关于kcachegrind 的控制台替代品?的主要内容,如果未能解决你的问题,请参考以下文章

GCC libstdc++ 配置文件模式的替代方案

如何回到 kcachegrind 的起点?

KCachegrind:找不到命令

kcachegrind:没有可用于以下功能的源

KCachegrind 解释混乱

在 KCacheGrind 中获取完整的应用调用图