我试图在64位机器(linux)上运行valgrind32位二进制文件,但出现此错误:valgrind:failedtostarttool'memcheck'forplatform'x86-linux':Nosuchfileordirectory我需要做什么才能让它发挥作用? 最佳答案 您没有在您的Linux发行版上安装用于分析32位程序的Valgrind。例如在Ubuntu15.04上,通过以下方式安装Valgrindapt-getinstallvalgrind同时安装32位和64位版本的Valgrind分析工具:$ls-1/
我正在用C++编写一个应用程序,它使用了一些外部开源库。我试图查看Ubuntu系统监视器以获取有关我的进程如何使用资源的信息,并且我注意到驻留内存继续增加到非常大的值(超过100MiB)。此应用程序应在嵌入式设备中运行,因此我必须小心。我开始认为应该有(一些)内存泄漏,所以我正在使用valgrind。不幸的是,似乎valgrind没有报告明显的内存泄漏,只有我正在使用的库中的一些小问题,仅此而已。那么,我是否必须得出结论,我的算法确实使用了那么多内存?这对我来说似乎很奇怪......或者我可能误解了系统监视器列的含义?当与软件分析相关时,有人可以阐明系统监视器中“虚拟内存”、“常驻内存
我正在使用OpenSSLAPI开发应用程序。众所周知,OpenSSL使用大量全局变量,这些变量被Valgrind视为错误(“条件跳转或移动...”等)。因此Valgrind的输出被来自共享库的错误阻塞。这对于调试目的来说非常不方便,因为每次我得到:MorethanXtotalerrorsdetected.I'mnotreportinganymore.Finalerrorcountswillbeinaccurate.Gofixyourprogram!问题是:我可以在Valgrind中禁用派对库(在我的例子中是-lssl和-lcrypto)内存检查吗?或者我可以只关注“绝对丢失”的错误吗?
您能告诉我如何使用valgrind进行内存分析吗?我从谷歌找到的文章谈到了如何使用valgrind进行内存泄漏。我对如何使用它进行内存分析感兴趣(即哪些类使用了多少内存)?谢谢。 最佳答案 您可以使用valgrind的Massif获取堆配置文件的工具。这段代码仍然被标记为“实验性”,并且它并不随所有版本的valgrind一起提供。您可能需要从源代码下载和构建。另请注意,堆配置文件是按分配站点组织的,这比类的粒度更细。如果您需要按类组织的信息,您将必须阅读开发人员文档并获得机器可读格式,然后找出哪些分配站点与哪些类相关——也许需要您的
我一直在努力理解为什么valgrind会为这个使用ucontexts的小测试程序提示“使用大小为8的未初始化值”。它基本上是一个创建“n_ucs”ucontext并切换它们“max_switch”次的程序。我理解“警告:客户端切换堆栈?”(这基本上就是程序的全部内容),但我无法真正理解所有“使用大小为8的未初始化值”如果Valgrind错误是误报,或者这个程序是否存在根本性错误,我想获得一些帮助。(我在使用相同机制的更大的程序中看到了很多,但我已将其提炼到最低限度以在此处发布)。感谢任何帮助。谢谢,jack#include#include#include#include#defineS
我正在尝试找出我使用Valgrind对一段内存进行了无效写入的位置。它告诉有这样一个问题,也在什么函数中,但不是在什么行中。虽然函数很小,但我希望在Valgrind中显示行号。我在Valgrind的一些输出中看到了这一点,但目前它们没有显示,我想知道为什么。输出如下:niklas@emerald:~/Arbeitsfläche/spyr/bin/Debug$valgrind--tool=memcheck--leak-check=full--show-reachable=yes./spyr[...]==4404==Invalidwriteofsize4==4404==at0x804884
我已经阅读了有关此参数的文档,但差异确实很大!启用后,一个简单程序(见下文)的内存使用量约为7GB当它被禁用时,报告的使用情况约为160KB.top还显示大约7GB,有点确认结果与pages-as-heap=yes.(我有一个理论,但我不相信它可以解释如此巨大的差异,所以-寻求帮助)。特别困扰我的是,报告的大部分内存使用情况都被std::string使用了。,而what?从不打印(意思是-实际容量非常小)。我确实需要使用pages-as-heap=yes在分析我的应用程序时,我只是想知道如何避免“误报”代码片段:#include#include#include#includevoidr
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭2年前。Improvethisquestion我有一个使用各种第三方共享对象库的linuxx86应用程序。我怀疑这些库正在泄漏内存(因为它不可能是我的代码;-)我尝试了可信赖的valgrind,但它死得很惨,因为oneofthethird-partylibrariesisusinganobscurex86instruction那valgrinddoesn'timplement.我找到了arecommendat
当我在程序上运行valgrind--leak-check=yes时,会报告一些丢失的内存字节。是否可以查看此内存的内容(即转储存储在其中的数据)? 最佳答案 您可以使用最新版本的Valgrind(3.8.1)做到这一点:启动您的可执行文件,在启动时激活gdbserver:valgrind--vgdb-error=0....然后在另一个窗口中,将gdb连接到Valgrind(按照指示由Valgrind提供)。然后在相关位置放置一个断点(例如在main的末尾)并使用gdbcontinue命令直到到达断点。然后从gdb进行泄漏搜索:mon
我运行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-