问题标签 [massif]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
39440 浏览

valgrind - Valgrind Massif工具输出图形界面?

我正在使用 Valgrind 3.3.1 和Massif工具来分析 C++ 应用程序的堆,我想知道是否有图形工具来检查文本输出文件文件。

感谢您的任何建议。

0 投票
2 回答
2077 浏览

memory - 使用 valgrind 跟踪管道命令的内存使用情况

我有几个进程正在运行我编写的通过管道连接的工具,我想用valgrind. 到目前为止,我已经尝试过类似的东西:

在哪里myProcesses.script运行相当于我的工具foo两次,例如

Valgrind 似乎没有按照我期望的方式捕获收集到的内存使用情况。如果我top用来跟踪这个,我会(为了争论)在第一个上得到 10% 的内存使用,然后在完成之前的foo第二个上再收集 10% 。这就是我想要衡量的事情:两个进程的使用情况。Valgrind 反而返回以下错误:foomyProcesses.script

有没有办法为我以管道方式(使用valgrind)使用的命令收集内存使用数据?或者我可以使用类似的工具来准确地自动化这些测量?

对我来说,民意调查时返回的数字top似乎很不稳定,我正在寻求准确且可重复的测量结果。如果您对替代工具有建议,我也会欢迎。

编辑valgrind- 修正了带有选项的错字。

编辑 2 - 出于某种原因,该选项似乎--pages-as-heap给我们正在测试的二进制文件带来了麻烦。你的例子运行良好。每次我们输入非内联函数时都会创建一个新页面(堆栈溢出 - 呵呵)。我们想计算这些,但它们在我们正在测试的内存使用规模中相对较小。(也许没有函数调用lsless?)删除--pages-as-heap有助于使测试再次工作。感谢戈麦斯先生的大力帮助。

0 投票
2 回答
935 浏览

c - massif 工具能否在多线程应用程序中正常工作?

我正在开发一个多线程应用程序,它似乎在运行期间分配了大量内存。所有内存都在执行结束时被释放,因此 valgrind 没有显示内存泄漏。我尝试使用 massif 工具找出发生了什么,但 ms_print 似乎只显示有关主线程的信息。但是,我相信绝大多数内存是在子线程中分配的。是否可以让地块显示有关它们的信息?

0 投票
2 回答
292 浏览

valgrind - valgrind 工具套件的工作

我在一个示例守护程序上运行了 valgrind。父进程在分配了 1000B 的块后退出,但在后台运行的子进程每两秒通过 malloc 在堆上分配 200B 的内存。

我的问题是:valgrind 是在实际处理器上还是在合成 CPU 上执行程序?

它是在实际堆上还是在不存在的合成 RAM 上分配内存?

因为我让程序运行了相当长的时间,以至于孩子在堆上分配了一些 2GB 的内存。在 massif 上实现程序时,我得到了一个父级的输出文件,而在终止守护进程时,我得到了另一个 massif.out。对于显示堆上内存分配的孩子。

0 投票
1 回答
441 浏览

memory - 在“杀死 9”的进程上使用地块

我正在尝试对消耗过多内存并被操作系统(FreeBSD)以 9 信号杀死的程序进行内存分析。这发生在某些特定数据上,因此在另一个(例如较小的)数据集上对其进行分析不会有太大帮助。当程序被杀死时 9 地块根本不会产生任何输出。在这种情况下可以做些什么来获得内存分析?

0 投票
1 回答
4347 浏览

c++ - Valgrind 的地块工具不会分析我的应用程序

我正在使用 CentOS 存储库中的标准 gcc 4.4 软件包在 64 位 CentOS 5.8 上开发一个静态链接的 64 位 C++ 应用程序。它使用的内存似乎比我预期的要多,所以我尝试使用 massif 来分析内存使用情况。我已经用调试信息编译然后运行

valgrind --tool=massif ./MyProg

从 MyProg 所在的目录。除了以下 massif.out.XXXX 示例之外,它永远不会产生任何结果。

请注意,这是文件的全部内容,我的程序可以运行几分钟。

我尝试了 valgrind 和 massif 的各种选项,但无济于事。我什至尝试使用 MyProg 的绝对路径,以防万一。我已经尝试下载 valgrind 的最新稳定版本(3.8.1)并编译和运行它(因为 CentOS 使用的是 3.5.0),结果相同。作为一个健全的检查,我跑了

valgrind --tool=massif ls -l

并且它按预期生成了多个内存使用量非零的快照。

我尝试使用我能想到的所有关键字组合在线搜索,但没有发现任何类似的问题。

附带说明一下,我可以使用 valgrind 的默认 memcheck 工具成功地分析应用程序,以防万一这是有用的信息。

有谁知道为什么 massif 无法分析我的应用程序?

0 投票
1 回答
2218 浏览

profiling - 为什么 valgrind massif 不报告任何函数名称或代码引用?

我有一个程序意外使用大量堆(大约 3GB)。我通过 valgrind memcheck 运行它,报告没有泄漏,声称所有堆内存仍然可以访问。

所以我用调试选项重建了我所有的库,并通过 valgrind massif 运行了 prog。我正在使用我今天刚刚下载并在我的盒子上构建的 Valgrind-3.8.1。命令行是:

Valgrind 没有产生任何错误或警告。生成的输出文件报告所有分配的内存,但大型分配的所有堆栈跟踪都无法识别函数名称或代码位置,例如:

我现在有点卡住了。我想知道我构建的库是否实际上没有启用调试 - 但是当我在 gdb 中运行我的代码时,它似乎确实具有所有调试信息。此外,massif 输出中还有一些其他(小得多的)内存分配结果,它们从我的代码中识别出函数名称和位置。

这些结果是否表明系统或外部库中的堆栈跟踪?这就是没有信息的原因吗?谁能建议我如何跟踪这些分配?

0 投票
1 回答
692 浏览

c++ - 由于内存不足导致linux应用程序崩溃

我为嵌入式 Linux 系统开发了一个应用程序,它可以进行大量的 UDP 数据包传输。应用程序在应用程序开始时完成所有内存分配,然后重用分配的内存以避免碎片。

我在桌面上运行了一个地块分析器,用于堆栈和堆,并且值不会变大。

但是,在嵌入式系统上运行很长时间,应用程序会退出并显示以下错误消息。这是泄漏的堆还是堆栈的过度使用?

0 投票
1 回答
521 浏览

c++ - massif 和 top 内存使用差异

我正在跟踪一个对象正在使用多少内存。我有一个简单的程序,它只是实例化对象并删除它。

如果我查看地块的输出或者从顶部查看虚拟内存,我会得到完全不同的结果。你有什么想法?当我使用 top 时,我只是添加了一个cin >> ajust 来暂停程序。

0 投票
0 回答
105 浏览

c++ - 如何在 Windows 上找出负责内存分配的代码位置

我有一个使用 400MB 堆的 C++ 应用程序,我想知道哪些 cpp 文件/行号对该分配贡献最大。

在 Linux 上,我已经成功地将 Massif 用于此目的。

我对知道如何检测内存泄漏不感兴趣,这些分配都是可以访问的。