Kcachegrind摇滚,这是我最喜欢的工具,但是我不时会错过在远程服务器上运行终端(例如使用ssh)的能力。
我知道可以设置VNC或X服务器转发但是在我需要简单的东西时它非常笨拙。
是否有任何kcachegrind控制台替代方案(例如基于ncurses)?
答案 0 :(得分:12)
您可以使用命令行实用程序 valgrind --tool=callgrind
从callgrind输出文件(由callgrind_annotate
创建)中获取基本信息和注释。 (manual page section in docs)。对于由cachegrind(valgrind --tool=cachegrind
)生成的文件,您可以使用 cg_annotate
(section in docs)。这些实用程序默认使用valgrind本身构建。
另一种方法是将程序和缓存/ callgrind输出文件复制到您的计算机上,然后像往常一样使用本地kcachegrind进行分析。但是这样一来,如果你的机器没有unix而不是windows或你在不兼容的arch上运行(kcachegrind可以调用local 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
答案 1 :(得分:5)
使用SSHFS挂载您正在使用的远程目录(请参阅例如SSHFS installation instructions for Ubuntu)。
然后ssh进入并运行valgrind --tool=callgrind
,并在远程目录中使用您想要的任何选项。由于您在本地安装了该目录,因此使用KCacheGrind打开数据文件就像在本地调试一样容易。
答案 2 :(得分:4)
webgrind是一个用PHP编写的Web前端,用于解析XDebug的输出(使用与callgrind相同的格式),因此它应该与callgrind的输出一起工作(尽管我还没有测试过它)。
答案 3 :(得分:0)
在远程主机上运行Valgrind / Callgrind似乎是个不错的选择。或者,您可以将Valgrind或Callgrind的输出scp到您的PC并在其上运行KCachegrind。
如果您使用Emacs,您可以在远程主机上启动它,并按照here所示进行操作,这将为您提供valgrind工具的Emacs'ish前端。
答案 4 :(得分:-8)
kcachegrind在其帮助中声明它是cachegrind和callgrind的前端。
cachegrind和callgrind是valgrind最新版本(3.5)的一部分。所以,从http://valgrind.org/downloads/current.html#current下载valgrind并构建它。运行valgrind --help,它会向您展示如何使用callgrind功能。
有关更多信息,我需要知道您想要做什么。