Tag: valgrind

在Mac OS X Mountain Lion和Mavericks上是否有任何替代valgrind的方法来检测C / C ++应用程序的内存泄漏?

我曾经使用valgrind来检测Mac OS X 10.6(Snow Leopard)和10.7(Lion)上的C / C ++应用程序的内存泄漏,但是我发现在10.8(Mountain Lion)和10.9(Mavericks)当我升级我的操作系统。 还有什么可以安装在Mac OS X 10.9上的valgrind吗?

是否有可能使valgrind忽略某些图书馆?

或者最好是所有的人而不是我的代码? 我的程序使用Gtk,Loudmouth和其他一些东西,而这两个(还有一些是libgcrypto,libssl)自己造成了很多错误,所以我无法检测到自己的错误。 是否有可能让valgrind忽略比我自己的代码更深的东西?

Helgrind(Valgrind)和OpenMP(C):避免误报?

Valgrind线程错误检测工具Helgrind的文档,在这里find 警告说,如果你使用GCC编译你的OpenMP代码,GCC的OpenMP运行时库( libgomp.so )会导致数据争用的错误报告混乱,因为它使用primefaces机器指令和Linux futex系统调用而不是POSIX pthreads基元。 它告诉你可以通过使用–disable-linux-futexconfiguration选项重新编译GCC来解决这个问题。 所以我试了一下 我使用–disable-linux-futexconfiguration选项编译并安装到本地目录( 〜/ GCC_Valgrind / gcc_install )一个新的GCC版本4.7.0(本文最新版本)。 然后,我创build了一个小的OpenMPtesting程序( test1.c ),它没有可见的数据竞争: /* test1.c */ #include <omp.h> #include <stdio.h> #include <stdlib.h> #define NUM_THREADS 2 int a[NUM_THREADS]; int main(void) { int i; #pragma omp parallel num_threads(NUM_THREADS) { int tid = omp_get_thread_num(); a[tid] = tid + 1; } for (i = 0; […]

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

我们的代码包含一个POD(普通的旧数据结构)结构(它是一个基本的C ++结构,它有其他结构和PODvariables,需要在开始时进行初始化)。 根据我所阅读的内容 ,似乎是: myStruct = (MyStruct*)calloc(1, sizeof(MyStruct)); 应将所有值初始化为零,如下所示: myStruct = new MyStruct(); 但是,当结构以第二种方式初始化时,Valgrind稍后会在使用这些variables时抱怨“条件跳转或移动取决于未初始化的值”。 我的理解是有缺陷的,还是Valgrind误报?

内存泄漏C ++

我只是用C ++编写了一些代码,但是当我运行valgrind时,它显示了一些可能的内存泄漏。 debugging代码到粒度级别我写了一个简单的C ++程序,如下所示: #include<iostream> #include<cstdlib> using namespace std; int main() { std::string myname("Is there any leaks"); exit(0); } 并在其上运行valgrind我得到: ==20943== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 26 from 1) ==20943== malloc/free: in use at exit: 360,645 bytes in 12,854 blocks. ==20943== malloc/free: 65,451 allocs, 52,597 frees, 2,186,968 bytes allocated. ==20943== For counts […]

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

如何使用valgrind查找程序中的内存泄漏? 请有人帮助我,描述执行程序的步骤? 我使用Ubuntu 10.04,我有一个程序ac ,请帮助我。

你用什么工具在Linux上开发C ++应用程序?

我在Linux环境下开发C ++应用程序。 我每天使用的工具包括Eclipse与CDT插件,gdb和valgrind。 其他人使用什么工具? 有没有什么可以与Linux相媲美的微软Visual Studio?

这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) 经过一番search之后,我发现这是一个Diagnostic message, mostly for benefit of the Valgrind developers, to do with memory permissions ,这些信息没有告诉我多less。 我的程序确实在堆上分配了大量的内存。 (一堆realloc后可以达到2-3 GB的RAM) 然而,尽pipe没有任何分配失败,警告仍然出现。 所以,我想知道这个消息是什么意思? 我没有某种内存许可? (但分配成功)

Valgrind尽pipe使用-g标志(在Ubuntu 11.10 / VirtualBox上)仍然没有显示行号,

我正在关注“学习艰苦之路”,特别是关于Valgrind的一章 。 本章给你一个故意错误的程序来展示Valgrind如何工作。 当我在Valgrind下运行练习时,我的堆栈跟踪中没有find行号,只是错误的“(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 0x4078B2B: _itoa_word (_itoa.c:195) […]

在Ruby中查找内存泄漏的原因

我在Rails代码中发现了内存泄漏 – 也就是说,我发现了什么代码泄漏,但没有发现泄漏的原因 。 我已经减less到一个不需要Rails的testing用例: require 'csspool' require 'ruby-mass' def report puts 'Memory ' + `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)[1].to_s + 'KB' Mass.print end report # note I do not store the return value here CSSPool::CSS::Document.parse(File.new('/home/jason/big.css')) ObjectSpace.garbage_collect sleep 1 report 据说ruby-mass可以让我看到内存中的所有对象。 CSSPool是一个基于racc的CSSparsing器。 /home/jason/big.css是一个1.5MB的CSS文件 。 这输出: Memory 9264KB ================================================== Objects within [] namespace […]