草庐IT

Valgrind

全部标签

c++ - 您如何解释缓存未命中的 cachegrind 输出?

出于好奇,我编写了几个不同版本的矩阵乘法并针对它运行了cachegrind。在下面的结果中,我想知道哪些部分是L1、L2、L3未命中和引用,它们的真正含义是什么?下面是我的矩阵乘法代码,以防万一有人需要。#defineSLOWEST==6933==Cachegrind,acacheandbranch-predictionprofiler==6933==Copyright(C)2002-2012,andGNUGPL'd,byNicholasNethercoteetal.==6933==UsingValgrind-3.8.1andLibVEX;rerunwith-hforcopyright

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

我正在使用CentOS存储库中的标准gcc4.4软件包在64位CentOS5.8上开发一个静态链接的64位C++应用程序。它使用的内存似乎比我预期的要多,所以我尝试使用massif来分析内存使用情况。我已经用调试信息编译,然后运行​​valgrind--tool=massif./MyProg来自MyProg所在的目录。除了以下massif.out.XXXX示例之外,它永远不会产生任何结果。desc:(none)cmd:./MyProgtime_unit:i#-----------snapshot=0#-----------time=0mem_heap_B=0mem_heap_extra

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

我正在使用CentOS存储库中的标准gcc4.4软件包在64位CentOS5.8上开发一个静态链接的64位C++应用程序。它使用的内存似乎比我预期的要多,所以我尝试使用massif来分析内存使用情况。我已经用调试信息编译,然后运行​​valgrind--tool=massif./MyProg来自MyProg所在的目录。除了以下massif.out.XXXX示例之外,它永远不会产生任何结果。desc:(none)cmd:./MyProgtime_unit:i#-----------snapshot=0#-----------time=0mem_heap_B=0mem_heap_extra

c++ - linux上的轻量级内存泄漏调试

我首先寻找现有的答案,发现Valgrind是大家最喜欢的linux内存泄漏调试工具。不幸的是,Valgrind似乎不适用于我的目的。我将尝试解释原因。约束:泄漏只会在客户的环境中重现。由于某些法律限制我们必须使用现有的二进制文件。没有重建。在常规环境中,我们的应用程序消耗约10%的CPU。说,我们可以容忍高达10倍的CPU使用率增加。Valgrind带有默认的memcheck设置更糟糕,使我们的应用程序长时间无响应时间段。我需要的是Microsoft的UMDH的等价物:为每个堆分配打开堆栈跟踪,然后在某个时间点转储所有按堆栈分组并按分配计数降序排列的分配。我们的应用同时在Windows

c++ - linux上的轻量级内存泄漏调试

我首先寻找现有的答案,发现Valgrind是大家最喜欢的linux内存泄漏调试工具。不幸的是,Valgrind似乎不适用于我的目的。我将尝试解释原因。约束:泄漏只会在客户的环境中重现。由于某些法律限制我们必须使用现有的二进制文件。没有重建。在常规环境中,我们的应用程序消耗约10%的CPU。说,我们可以容忍高达10倍的CPU使用率增加。Valgrind带有默认的memcheck设置更糟糕,使我们的应用程序长时间无响应时间段。我需要的是Microsoft的UMDH的等价物:为每个堆分配打开堆栈跟踪,然后在某个时间点转储所有按堆栈分组并按分配计数降序排列的分配。我们的应用同时在Windows

c++ - Valgrind 堆栈完全错过了一个函数

我有两个c文件:交流voidmain(){...getvtable()->function();}vtable指向一个位于b.c:中的函数:voidfunction(){malloc(42);}现在,如果我在valgrind中跟踪程序,我会得到以下信息:==29994==4,155bytesin831blocksaredefinitelylostinlossrecord26of28==29994==at0x402CB7A:malloc(in/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)==29994==by0x40A24D2:(be

c++ - Valgrind 堆栈完全错过了一个函数

我有两个c文件:交流voidmain(){...getvtable()->function();}vtable指向一个位于b.c:中的函数:voidfunction(){malloc(42);}现在,如果我在valgrind中跟踪程序,我会得到以下信息:==29994==4,155bytesin831blocksaredefinitelylostinlossrecord26of28==29994==at0x402CB7A:malloc(in/usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)==29994==by0x40A24D2:(be

c++ - Valgrind 几乎对所有内容都给出错误(警告 : client switching stacks?)

我以某种方式破坏了内存,因为我的程序在随机位置崩溃而没有错误。我正在使用带有--leak-check=full的valgrind,使用-O0-g进行编译,它检测到的第一个问题是intmain()cout与==5089==Warning:clientswitchingstacks?SPchange:0x7ff0004f8-->0x7feb7de10==5089==tosuppress,use:--max-stackframe=4728552orgreater==5089==Invalidwriteofsize8==5089==at0x41E107:main(Dgn.cpp:2833)==

c++ - Valgrind 几乎对所有内容都给出错误(警告 : client switching stacks?)

我以某种方式破坏了内存,因为我的程序在随机位置崩溃而没有错误。我正在使用带有--leak-check=full的valgrind,使用-O0-g进行编译,它检测到的第一个问题是intmain()cout与==5089==Warning:clientswitchingstacks?SPchange:0x7ff0004f8-->0x7feb7de10==5089==tosuppress,use:--max-stackframe=4728552orgreater==5089==Invalidwriteofsize8==5089==at0x41E107:main(Dgn.cpp:2833)==

c++ - Valgrind 在 std::make_unique 中显示内存泄漏

我正在使用Valgrind检查内存泄漏。不幸的是,我收到了Leak_DefinitelyLost警告。附件是我的代码的简化版本,它重现了错误:#include#include#include#includeusingnamespacestd;classBase{public:explicitBase(doublea){a_=a;}virtualvoidfun()=0;protected:doublea_;};classDerived_A:publicBase{public:Derived_A(doublea,vectorb,vectorc):Base(a),b_{b},c_{c}{}v