标签: valgrind

有一个很好的Valgrind替代Windows吗?

当我发现它仅适用于Linux时,我正在研究Valgrind以帮助改进我的C编码/调试 - 我没有其他需要或兴趣将我的操作系统转移到Linux所以我想知道是否有一个同样好的Windows程序.

c windows debugging valgrind memory-leaks

210
推荐指数
12
解决办法
30万
查看次数

精确定位"条件跳转或移动取决于未初始化的值"valgrind消息

所以我一直在从valgrind那里得到一些神秘的未初始化的价值信息,这一直是神秘的,因为坏的价值源于何处.

似乎valgrind显示了最终使用的单位化值的位置,而不是未初始化值的来源.

==11366== Conditional jump or move depends on uninitialised value(s)
==11366==    at 0x43CAE4F: __printf_fp (in /lib/tls/i686/cmov/libc-2.7.so)
==11366==    by 0x43C6563: vfprintf (in /lib/tls/i686/cmov/libc-2.7.so)
==11366==    by 0x43EAC03: vsnprintf (in /lib/tls/i686/cmov/libc-2.7.so)
==11366==    by 0x42D475B: (within /usr/lib/libstdc++.so.6.0.9)
==11366==    by 0x42E2C9B: std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, double) const (in /usr/lib/libstdc++.so.6.0.9)
==11366==    by 0x42E31B4: std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const (in /usr/lib/libstdc++.so.6.0.9)
==11366==    by 0x42EE56F: std::ostream& std::ostream::_M_insert<double>(double) (in /usr/lib/libstdc++.so.6.0.9)
==11366==    by 0x81109ED: …
Run Code Online (Sandbox Code Playgroud)

c++ valgrind

160
推荐指数
2
解决办法
17万
查看次数

仍然可以通过Valgrind检测泄漏

该块中提到的所有功能都是库函数.我怎样才能纠正这个内存泄漏?

它列在" 仍可达 "类别下.(还有4个,非常相似,但尺寸各异)

 630 bytes in 1 blocks are still reachable in loss record 5 of 5
    at 0x4004F1B: calloc (vg_replace_malloc.c:418)
    by 0x931CD2: _dl_new_object (dl-object.c:52)
    by 0x92DD36: _dl_map_object_from_fd (dl-load.c:972)
    by 0x92EFB6: _dl_map_object (dl-load.c:2251)
    by 0x939F1B: dl_open_worker (dl-open.c:255)
    by 0x935965: _dl_catch_error (dl-error.c:178)
    by 0x9399C5: _dl_open (dl-open.c:584)
    by 0xA64E31: do_dlopen (dl-libc.c:86)
    by 0x935965: _dl_catch_error (dl-error.c:178)
    by 0xA64FF4: __libc_dlopen_mode (dl-libc.c:47)
    by 0xAE6086: pthread_cancel_init (unwind-forcedunwind.c:53)
    by 0xAE61FC: _Unwind_ForcedUnwind (unwind-forcedunwind.c:126)
Run Code Online (Sandbox Code Playgroud)

Catch:一旦我运行我的程序,它没有内存泄漏,但它在Valgrind输出中有一个额外的行,之前没有出现:

由于munmap()而丢弃/lib/libgcc_s-4.4.4-20100630.so.1中的0x5296fa0-0x52af438处的syms

如果泄漏无法纠正,有人可以解释为什么munmap()行导致Valgrind报告0"仍然可达"泄漏?

编辑:

这是一个最小的测试样本:

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

void *runner(void …
Run Code Online (Sandbox Code Playgroud)

c valgrind pthreads

147
推荐指数
4
解决办法
9万
查看次数

如何将Valgrind的输出重定向到文件?

在使用Valgrind工具时,我需要记录valgrind工具生成的详细信息.我怎么能做到这一点?我尝试过类似的东西,

 valgrind a.out | test
Run Code Online (Sandbox Code Playgroud)

 valgrind a.out > test
Run Code Online (Sandbox Code Playgroud)

它只给出了程序的输出而不是valgrind内存错误,泄漏信息.如果程序不需要用户交互(即提供输入),即使我是这样的.如果程序需要用户输入,即使该东西本身也不起作用.

我怎样才能做到这一点?

redirect valgrind

137
推荐指数
4
解决办法
9万
查看次数

如何使用valgrind查找内存泄漏?

如何使用valgrind查找程序中的内存泄漏?

请有人帮助我并描述执行程序的步骤?

我正在使用Ubuntu 10.04,我有一个程序a.c,请帮帮我.

c valgrind

134
推荐指数
4
解决办法
23万
查看次数

优胜美地和Valgrind

你能告诉我如何在优胜美地上安装valgrind吗?当我尝试安装它时,我得到"检查内核版本...不支持(14.0.0)configure:错误:Valgrind适用于Darwin 10.x,11.x,12.x和13.x(Mac OS X) 10.6/7/8/9)"

没有官方路径或更新,我没有找到任何东西(除了http://comments.gmane.org/gmane.comp.kde.devel.bugs/1553705,但他们没有解决这个问题).

macos valgrind osx-yosemite

111
推荐指数
6
解决办法
4万
查看次数

valgrind如何运作?

有人可以提供Valgrind如何工作的快速顶级解释吗?一个例子:它如何知道何时分配和释放内存?

valgrind

76
推荐指数
2
解决办法
2万
查看次数

这个Valgrind警告意味着什么? - 警告设定地址范围烫发

当我对valgrind运行我的程序时,我遇到了以下警告.

Warning: set address range perms: large range [0x4d59d040, 0x6159d040) (undefined)
Warning: set address range perms: large range [0x194f7030, 0x2d4f7050) (noaccess)
Warning: set address range perms: large range [0x3959d030, 0x6159d050) (noaccess)
Run Code Online (Sandbox Code Playgroud)

经过一些谷歌搜索后,我在这里发现它是一个Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions,这并没有告诉我多少.

我的程序确实在堆上分配了大量内存.(一堆之后可以达到2-3 GB的ram realloc)

但是,尽管没有任何分配失败,但警告仍然出现.

那么,我想知道这个消息到底意味着什么?我没有某种内存许可?(但分配成功)

c memory valgrind

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

Valgrind Massif工具输出图形界面?

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

谢谢你的任何建议.

valgrind massif

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

正确初始化C++结构的方法

我们的代码涉及一个POD(Plain Old Datastructure)结构(它是一个基本的c ++结构,其中包含其他结构和POD变量,需要在开始时进行初始化.)

根据我所读到的,似乎:

myStruct = (MyStruct*)calloc(1, sizeof(MyStruct));
Run Code Online (Sandbox Code Playgroud)

应该将所有值初始化为零,如下所示:

myStruct = new MyStruct();
Run Code Online (Sandbox Code Playgroud)

但是,当以第二种方式初始化结构时,Valgrind后来抱怨"当使用这些变量时,条件跳转或移动取决于未初始化的值".我的理解是否存在缺陷,或者Valgrind是否会误报?

c++ struct valgrind initialization calloc

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