Questions tagged «valgrind»

Valgrind是用于Linux,OS X,Android和Solaris系统的动态分析工具。它可用于性能分析以及查找内存泄漏,竞争条件和线程错误。

30
是否有Windows的Valgrind替代品?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 当我发现Valgrind仅适用于Linux时,我正在研究Valgrind,以帮助改善C编码/调试-我对将OS迁移至Linux没有其他需求或兴趣,因此我想知道是否有同样好的Windows程序。

4
如何使用valgrind查找内存泄漏?
如何使用valgrind查找程序中的内存泄漏? 请有人帮助我并描述执行该程序的步骤吗? 我正在使用Ubuntu 10.04,并且我有一个程序a.c,请帮帮我。
180 c  valgrind 

2
查明“条件跳转或移动取决于未初始化的值” 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, …
166 c++  valgrind 

5
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) …
154 c  pthreads  valgrind 

3
如何将Valgrind的输出重定向到文件?
使用Valgrind工具时,我需要记录valgrind工具产生的详细信息。我该怎么做?我尝试过类似 valgrind a.out | test 和 valgrind a.out > test 它仅给出程序的输出,而不给出valgrind内存错误和泄漏信息。如果程序不需要用户交互(即提供输入),即使我也变得这样。如果程序需要用户输入,那么该东西本身将无法工作。 我怎样才能做到这一点?
147 redirect  valgrind 

12
优胜美地和瓦尔格朗德
您能告诉我如何在优胜美地上安装valgrind吗?当我尝试安装它时,我得到“正在检查内核版本...不支持(14.0.0)的配置:错误: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,但他们没有解决该问题)。

6
初始化C ++结构的正确方法
我们的代码涉及一个POD(普通旧数据结构)结构(这是一个基本的c ++结构,其中包含其他结构和POD变量,需要在开始时对其进行初始化。) 根据我所读的文章,似乎: myStruct = (MyStruct*)calloc(1, sizeof(MyStruct)); 应该将所有值初始化为零,如下所示: myStruct = new MyStruct(); 但是,当用第二种方法初始化该结构时,Valgrind随后抱怨说,当使用这些变量时,“条件跳转或移动取决于未初始化的值”。我的理解是否存在缺陷,还是Valgrind抛出假阳性?

5
valgrind如何工作?
有人可以提供有关Valgrind工作原理的简要说明吗?一个例子:如何知道何时分配和释放内存?
79 valgrind 

1
此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) 经过一番谷歌搜索后,我在这里发现它是一个Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions,告诉我的并不多。 我的程序确实在堆上分配了大量内存。(一整串后可以达到2-3 GB的内存realloc) 但是,尽管所有分配均未失败,但仍出现警告。 因此,我想知道此消息的真正含义是什么?我没有某种存储权限?(但分配成功)
77 c  memory  valgrind 


3
Valgrind:使用<iostream>的普通程序仍然可以访问内存
采取以下简单程序: #include &lt;iostream&gt; int main() { return 0; } 如果我使用valgrind来运行此程序72,704 bytes in 1 blocks,则会被告知存在still reachable。因此,关于是否要担心仍然可以到达的警告,已经进行了广泛的讨论,我对此并不担心。我只想了解当标准库标头中的任何对象都没有分配给程序本身时,仅包含标准库标头便会导致仍然可以到达的警告。 这是完整的valgrind输出: $ valgrind --leak-check=full --track-origins=yes --show-reachable=yes ./ValgrindTest ==27671== Memcheck, a memory error detector ==27671== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==27671== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright …
73 c++  valgrind 

7
尽管-g标志,Valgrind仍不显示行号(在Ubuntu 11.10 / VirtualBox上)
我正在关注“艰难学习C”,特别是关于Valgrind的章节。本章为您提供一个故意错误的程序,以显示Valgrind的工作方式。 当我在Valgrind下运行该练习时,在堆栈跟踪中没有得到行号,只是出现了“(在main以下)”错误。 我肯定在编译-g标志。 我的Valgrind输出如下: djb@twin:~/projects/Learning/C$ valgrind ./ex4 ==5190== Memcheck, a memory error detector ==5190== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==5190== Using Valgrind-3.6.1-Debian and LibVEX; rerun with -h for copyright info ==5190== Command: ./ex4 ==5190== ==5190== Use of uninitialised value of size 4 ==5190== at …
68 c  valgrind 

3
有没有办法在Catalina上安装Valgrind?
有没有办法在Catalina上安装Valgrind并使其正常运行?如果是这样,我将非常感谢逐步的过程。 我尝试使用https://github.com/sowson/valgrind安装Valgrind, 但是当我helloWorld.cpp在终端上进行测试时,控制台返回了我不应该得到的错误。 我不确定在此版本的Valgrind的安装过程中是否犯了我的错误,或者Valgrind本身与Catalina OS不兼容。 我也尝试通过Homebrew安装Valgrind,但与此同时我也遇到了问题(github.com/Homebrew/homebrew-core/issues/36683)。

3
如何使用Homebrew在macOS Catalina(10.15)上安装Valgrind?
我尝试使用命令brew install Valgrind安装Valgrind,并且收到一条消息: “ valgrind:由于上游不兼容,该公式无法在比Sierra更高的macOS版本上编译或正常运行。错误:未满足的要求导致此构建失败。” 我还尝试在代码的开头部分“ brew edit valgrind”并将“ sourceware.org/git/valgrind.git”替换为“ git://sourceware.org/git/valgrind.git”,然后在“ Iterm”上写道:brew install --HEAD valgrind”,但它给了我: Last 15 lines from /Users/m/Library/Logs/Homebrew/valgrind/02.configure: checking for gcc-ar... no checking for perl... /usr/bin/perl checking for gdb... /no/gdb/was/found/at/configure/time checking dependency style of clang... none checking for diff -u... yes checking for clang option to accept ISO …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.