用于分析结果的基于文本的查看器

Posted

技术标签:

【中文标题】用于分析结果的基于文本的查看器【英文标题】:text-based viewer for profiling results 【发布时间】:2010-11-29 15:03:09 【问题描述】:

您知道用于查看应用程序分析结果的基于文本的应用程序吗?分析结果基本上包含 C++ 函数调用回溯列表以及遇到这些回溯的频率;现在我正在寻找一个控制台工具来分析原始数据(最常发生回溯;最常调用哪个函数,独立于调用跟踪......)。

到目前为止,我已经从原始数据创建了与 callgrind 兼容的文件,然后使用出色的 KCachegrind 工具进行分析;但现在我也在寻找一种不需要在基于文本的终端上工作的工具。有什么想法吗?

【问题讨论】:

【参考方案1】:

看看callgrind_annotate

此命令读入配置文件数据,并打印一个排序的函数列表,可选择使用源注释。

【讨论】:

【参考方案2】:

我曾经写过这样一个查看器。它专注于一行代码,显示通过该行的样本的百分比,以及一个允许转换到上级或下级代码行的蝴蝶视图。

它做了一个很好的演示,但我真的用过吗?不会太久。

(我假设堆栈样本是在您希望加速的时间间隔内进行的,即不在用户等待期间。)

问题是,该程序在那段时间可能正在做一些浪费的事情。 (如果不是,则无法加快速度。) 不管那是什么浪费,它都是因为一些糟糕的原因而花费了一些时间,比如 10%、50%、90% 等等。在此期间,它在堆栈上,因此对堆栈样本的检查将显示它。

而且,你不必看很多。如果某件事占用了 50% 的时间,则 1000 个样本将显示在大约 500 上,10 个样本将显示在大约 5 上。较大数量的样本将以额外的精度估计百分比。如果您的目标是隔离问题以便解决问题,则不需要额外的数字。

所以,一个工具可以逐行显示通过该行的堆栈样本的百分比是一件非常好的事情,因为浪费的代码会出现在它上面,显示百分比。

它没有告诉你的是语句被执行的原因,这是你如何知道它是否浪费的。查看堆栈上语句的上下文确实可以告诉您这一点。

因此,即使我有查看器,我也只是检查了样本本身,而且只有大约 10 或 20 个。百分比越大,我在找到它之前需要查看的样本数量就越少。 Here's an example.

【讨论】:

以上是关于用于分析结果的基于文本的查看器的主要内容,如果未能解决你的问题,请参考以下文章

大文本文件查看器如何工作?如何构建大型文本阅读器

是否可以查看“C++”预处理器的结果

是否有可用于查看器版本 7 的 angular 8 自动锻造的示例。 *

IDEA插件系列(46):PDF Viewer插件——PDF文档查看器

用于为 Web 应用程序创建左/右滚动通知查看器的 Gem?

JMeter主要元件