标签: massif

Valgrind Massif工具输出图形界面?

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

谢谢你的任何建议.

valgrind massif

70
推荐指数
3
解决办法
3万
查看次数

Valgrind的massif工具不会描述我的应用程序

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

valgrind --tool = massif ./MyProg

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

desc: (none)
cmd: ./MyProg
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
Run Code Online (Sandbox Code Playgroud)

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

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

valgrind --tool = massif ls -l

并且它产生了多个快照,并且按预期使用了非零内存.

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

作为旁注,我可以使用valgrind的默认memcheck工具成功分析应用程序,以防有用信息.

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

c++ linux valgrind centos massif

17
推荐指数
1
解决办法
3500
查看次数

了解Linux虚拟内存:valgrind的massif输出显示有和没有--pages-as-heap的主要区别

我已经阅读了有关此参数的文档,但区别非常大!启用后,简单程序(见下文)的内存使用量约为7 GB,禁用时,报告的使用量约为160 KB.

top也显示大约7 GB,这有点证实了结果pages-as-heap=yes.

(我有一个理论,但我不相信它会解释这么大的差异,所以 - 请求一些帮助).

特别困扰我的是,大部分报告的内存使用情况都被使用std::string,而what?从未打印过(意思是 - 实际容量非常小).

我需要pages-as-heap=yes在分析我的应用程序时使用,我只是想知道如何避免"误报"


代码段:

#include <iostream>
#include <thread>
#include <vector>
#include <chrono>

void run()
{
    while (true)
    {
        std::string s;
        s += "aaaaa";
        s += "aaaaaaaaaaaaaaa";
        s += "bbbbbbbbbb";
        s += "cccccccccccccccccccccccccccccccccccccccccccccccccc";
        if (s.capacity() > 1024) std::cout << "what?" << std::endl;

        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
}

int main()
{
    std::vector<std::thread> workers;
    for( unsigned i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c++ linux valgrind virtual-memory massif

11
推荐指数
2
解决办法
774
查看次数

Valgrind Massif 工具力快照

我希望在我的代码中添加一些内容,以便我可以在执行的某些点强制使用 Massif 快照,例如在服务器中将 Massif 快照转储到请求之间的文件中,以查看我是否占用了大量内存请求之间。我无法找到一种方法,无论是宏还是库调用来强制它转储快照,此时是否有办法做到这一点?

谢谢

c++ valgrind massif

4
推荐指数
1
解决办法
2832
查看次数

构建 Massif-Visualizer:包含找不到加载文件 CMakeFindDependencyMacro

我正在尝试在 CentOS 7 上构建Massif-Visualizer。不幸的是,我不得不尝试猜测依赖项,因为它们并未全部列在文件中INSTALL。迄今为止:

yum install git
yum install kdelibs-devel extra-cmake-modules \
            qt5-qtsvg-devel qt5-qtxmlpatterns-devel \
            kf5-kparts-devel kf5-karchive-devel
git clone https://github.com/KDE/massif-visualizer
cd massif-visualizer
mkdir build
(cd build && cmake .. && make && make install)
Run Code Online (Sandbox Code Playgroud)

这些 Qt5 和 KF5 包主要是通过反复试验以及 CMake 错误消息中的一些模式匹配而添加到命令中的yum……但我似乎不知道如何解决这些最后的错误:

-- Could not set up the appstream test. appstreamcli is missing.
CMake Error at /usr/lib64/cmake/KF5Archive/KF5ArchiveConfig.cmake:37 (include):
  include could not find load file:

    CMakeFindDependencyMacro
Call Stack (most recent call first):
  /usr/share/ECM/find-modules/FindKF5.cmake:74 (find_package)
  CMakeLists.txt:34 (find_package) …
Run Code Online (Sandbox Code Playgroud)

valgrind centos cmake massif centos7

3
推荐指数
1
解决办法
2448
查看次数

使用Massif用valgrind测量时,Rust程序的堆大小非常大

我正在尝试测量正在编写的rust程序的内存大小。我注意到当我使用以下命令测量堆大小时:

valgrind --tool=massif --pages-as-heap=yes ./program

并使用ms_print测量,内存大小非常大(通常约为16MB)。最终,我将rust程序简化为一个空的main函数:

fn main() {
}
Run Code Online (Sandbox Code Playgroud)

我编译后,仍然有16MB的内存大小。我注意到当我使用另一台计算机时,相同的二进制文件总大小为4MB。我的一位朋友在他的计算机上使用相同的程序尝试了此操作,并使用了相同的rust / valgrind版本,并且还获得了4MB的大小。

我想象这是可能在堆中使用的某种预分配内存,但是我无法找到任何控制它的方法。我什至尝试按照指南更改分配器,但没有任何更改。

系统细节:

OS version       = Ubuntu 18.04
valgrind version = valgrind-3.13.0
cargo version    = cargo 1.39.0-nightly (3f700ec43 2019-08-19)
rustc version    = rustc 1.39.0-nightly (e44fdf979 2019-08-21)
ms_print         = ms_print-3.13.0
libc version     = ldd (Ubuntu GLIBC 2.27-3ubuntu1) 2.27
Run Code Online (Sandbox Code Playgroud)

valgrind rust massif

2
推荐指数
1
解决办法
115
查看次数

标签 统计

massif ×6

valgrind ×6

c++ ×3

centos ×2

linux ×2

centos7 ×1

cmake ×1

rust ×1

virtual-memory ×1