草庐IT

Valgrind

全部标签

memory - 为什么 valgrind 在 64 位架构上限制为 32 Gb?

我正在尝试在一个使用超过32Gb内存的进程上对一个heisenbug进行valgrind,并达到了这个valgrind限制,这是可以通过重新编译valgrind来避免的任意问题还是很难? 最佳答案 限制是任意的,可以通过重新编译valgrind来改变。Valgrind使用2级稀疏数组跟踪内存。地址的16位用于索引包含指向二级映射的指针的65536条目表,该映射跟踪地址空间的范围(对于32位进程,通常2¹⁶字节=64KB,对于2¹⁹字节=512KB64位进程)。所以这个2级稀疏数组可以跟踪的内存总量是65536×这个block大小。通

c - Valgrind 报告空 C 程序的未初始化值

我用gcctest.c或clangtest.c编译了这个C程序:intmain(void){return0;}valgrind./a.out给了我这个:==9232==Memcheck,amemoryerrordetector==9232==Copyright(C)2002-2011,andGNUGPL'd,byJulianSewardetal.==9232==UsingValgrind-3.7.0andLibVEX;rerunwith-hforcopyrightinfo==9232==Command:./a.out==9232====9232==Conditionaljumpormo

c - 这个 Valgrind 警告是什么意思? - 警告设置地址范围权限

当我针对valgrind运行我的程序时,我遇到了以下警告。Warning:setaddressrangeperms:largerange[0x4d59d040,0x6159d040)(undefined)Warning:setaddressrangeperms:largerange[0x194f7030,0x2d4f7050)(noaccess)Warning:setaddressrangeperms:largerange[0x3959d030,0x6159d050)(noaccess)经过一番谷歌搜索后,我发现here这是一个诊断消息,主要是为了Valgrind开发人员的利益,与内存

c++ - 如何使用 Valgrind 检测段错误细节?

我有一个std::map,它通过一些API调用进行了初始化。当我尝试使用此map时,我遇到了段错误。如何检测无效代码或无效代码或任何可以帮助我解决问题的细节?代码如下所示:std::mapcont;some_func(cont);//gettingparameterbyreferenceandinitializeit,someonecorruptedmemory(cont)insidethisfunctionstd::cout 最佳答案 您使用以下语法启动您的应用程序(在Debug模式下编译):valgrindyourappValg

c++ - valgrind 未检测到的 malloc_consolidate (malloc.c) 中的段错误

这个问题在这里已经有了答案:Segfaultsinmalloc()andmalloc_consolidate()(2个回答)关闭6年前。我的程序出现段错误,我找不到原因。最糟糕的是,有问题的函数并不总是导致段错误。GDB确认错误并产生此回溯:ProgramreceivedsignalSIGSEGV,Segmentationfault.0xb7da6d6einmalloc_consolidate(av=)atmalloc.c:51695169malloc.c:Nosuchfileordirectory.inmalloc.c(gdb)bt#00xb7da6d6einmalloc_conso

c++ - 为什么 Valgrind 使用 boost::thread 显示堆栈使用量增加?

写了一个简单的测试:#include#includeusingnamespacestd;voidmyThreadRun(){coutValgrindMassif在其上显示以下图表:(堆栈分析已启用。平台:LinuxUbuntux86)。这个程序实际上似乎没有内存泄漏:内存使用是稳定的。我想知道:这是Valgrind还是boost::thread的问题?还是我误解了什么?你会怎么解释? 最佳答案 这不是boost::threads,它也发生在普通的pthreads上。我从here获取了示例程序(Pthread创建和终止),将线程数增加

c++ - Valgrind 和 "WARNING: new redirection conflicts with existing"

我在Valgrind中得到了这个。--24101--REDIR:0xbb20580(operatordelete(void*))redirectedto0x93b7d48(operatordelete(void*))--24101--REDIR:0xbb22580(operatornew[](unsignedlong))redirectedto0x93b88b7(operatornew[](unsignedlong))==24101==WARNING:newredirectionconflictswithexisting--ignoringit--24101--new:0x156320

c++ - 抑制 GTK+ 中的 Valgrind 错误

我有一个使用GTK+和Glade的应用程序;使用memcheck工具运行Valgrind会输出大约2,000个错误。有没有人可以为GTK应用程序共享一个好的抑制文件?我尝试了这些,但每个仍然给我留下大约900个错误:http://www.vips.ecs.soton.ac.uk/development/nip2.supphttp://www.gnome.org/~johan/gtk.suppressionhttps://gist.github.com/758760可以找到我正在使用的代码的拷贝here.执行makerun来构建GUI(在这个代码拷贝中只有GUI)。

c++ - 如何使用基本的 c 示例运行 valgrind?

安装:bzip2-dvalgrind-3.10.1.tar.bz2tar-xfvalgrind-3.10.1.tar然后:./configuremakemakeinstall或者更简单的sudoapt-getinstallvalgrind如何在这个简单的程序example1.c上运行valgrind#includeintmain(){char*x=malloc(100);/*or,inC++,"char*x=newchar[100]*/return0;}运行:valgrind--tool=memcheck--leak-check=yesexample1valgrind:example1

c++ - 如何将 valgrind 测试添加到我的 cmake "test"目标

我通过使用ninja构建来运行单元测试,然后从我的构建树中运行ninjatest:cmake-GNinja/source/treeninjaninjatest但是,要运行valgrind,我需要手动运行它:valgrindrel/path/to/test我希望valgrind在我运行ninjatest时自动运行。Accordingtothecmakedocumentation“设置[valgrind测试]非常简单”,但是当我运行时ctest-DNightlyMemoryCheck我只是得到这个错误:Cannotfindfile:/home/arman/tinman/deb/DartCo