草庐IT

gtest_valgrind

全部标签

c - valgrind 错误和 ucontext。为什么是 "Use of uninitialised value of size 8"?

我一直在努力理解为什么valgrind会为这个使用ucontexts的小测试程序提示“使用大小为8的未初始化值”。它基本上是一个创建“n_ucs”ucontext并切换它们“max_switch”次的程序。我理解“警告:客户端切换堆栈?”(这基本上就是程序的全部内容),但我无法真正理解所有“使用大小为8的未初始化值”如果Valgrind错误是误报,或者这个程序是否存在根本性错误,我想获得一些帮助。(我在使用相同机制的更大的程序中看到了很多,但我已将其提炼到最低限度以在此处发布)。感谢任何帮助。谢谢,jack#include#include#include#include#defineS

c - Valgrind 不显示行号

我正在尝试找出我使用Valgrind对一段内存进行了无效写入的位置。它告诉有这样一个问题,也在什么函数中,但不是在什么行中。虽然函数很小,但我希望在Valgrind中显示行号。我在Valgrind的一些输出中看到了这一点,但目前它们没有显示,我想知道为什么。输出如下:niklas@emerald:~/Arbeitsfläche/spyr/bin/Debug$valgrind--tool=memcheck--leak-check=full--show-reachable=yes./spyr[...]==4404==Invalidwriteofsize4==4404==at0x804884

c++ - 了解Linux虚拟内存: valgrind's massif output shows major differences with and without --pages-as-heap

我已经阅读了有关此参数的文档,但差异确实很大!启用后,一个简单程序(见下文)的内存使用量约为7GB当它被禁用时,报告的使用情况约为160KB.top还显示大约7GB,有点确认结果与pages-as-heap=yes.(我有一个理论,但我不相信它可以解释如此巨大的差异,所以-寻求帮助)。特别困扰我的是,报告的大部分内存使用情况都被std::string使用了。,而what?从不打印(意思是-实际容量非常小)。我确实需要使用pages-as-heap=yes在分析我的应用程序时,我只是想知道如何避免“误报”代码片段:#include#include#include#includevoidr

linux - 用于查找 linux 泄漏的 valgrind(memcheck)替代方案?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭2年前。Improvethisquestion我有一个使用各种第三方共享对象库的linuxx86应用程序。我怀疑这些库正在泄漏​​内存(因为它不可能是我的代码;-)我尝试了可信赖的valgrind,但它死得很惨,因为oneofthethird-partylibrariesisusinganobscurex86instruction那valgrinddoesn'timplement.我找到了arecommendat

memory - 转储 Valgrind 报告的丢失内存的内容

当我在程序上运行valgrind--leak-check=yes时,会报告一些丢失的内存字节。是否可以查看此内存的内容(即转储存储在其中的数据)? 最佳答案 您可以使用最新版本的Valgrind(3.8.1)做到这一点:启动您的可执行文件,在启动时激活gdbserver:valgrind--vgdb-error=0....然后在另一个窗口中,将gdb连接到Valgrind(按照指示由Valgrind提供)。然后在相关位置放置一个断点(例如在main的末尾)并使用gdbcontinue命令直到到达断点。然后从gdb进行泄漏搜索:mon

linux - 如何将 valgrind 运行到具有 super 用户位的进程?

我运行valgrind如下:-/usr/local/bin/valgrind"进程名"执行后它给我以下错误==21731====21731==Warning:Can'texecutesetuid/setgidexecutable:==21731==Possibleworkaround:remove--trace-children=yes,ifineffect==21731==valgrind:"processname":Permissiondenied我的valgrind权限如下:--r-sr-xr-x/usr/local/bin/valgrind我的进程权限如下:--r-sr-xr-

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++ - 建立gtest版本

我如何知道我正在使用的项目中使用的是哪个版本的Gtest?我正在使用linux平台。 最佳答案 libgtest或libgtest_main库的源代码不包含允许识别其版本的特殊函数(例如GetGTestVersion()或别的东西)。头文件也没有任何定义的标识符(像GTEST_VERSION或其他东西)。因此,您无法在运行时在用户代码中检查GoogleC++测试框架的版本。但是维护者提供了作为框架的一部分的特殊脚本scripts/gtest-conf其中:...providesaccesstothenecessarycompilea