valgrind相关内容

使用 gdb 调试时干净地退出 valgrind

我正在使用 valgrind 和 gdb 调试程序.然而,我以一种野蛮的方式终止了那些调试会话……这真的是应该如何完成的吗? 设置调试会话 遵循官方的说明valgrind 网站我执行以下操作来运行程序: 我通过输入运行 valgrind valgrind --tool=memcheck --vgdb=yes --vgdb-error=0 ./prgm.run 在另一个终端会话 ..
发布时间:2021-09-15 20:44:43 其他开发

valgrind 不接受最新版本的 glibc

Valgrind 不喜欢 glibc 2.15: 正在检查 GLIBC_VERSION 版本...不受支持的版本 2.15配置:错误:Valgrind 需要 glibc 版本 2.2 - 2.14 我该如何处理?我必须降级 glibc 吗?如果有相关信息,我正在使用 Ubuntu 12.04. 更新: 所以我试图从那里下载源代码并安装,而不是使用 apt-get,因为我正在学习 C ..
发布时间:2021-09-15 20:44:40 其他开发

Valgrind 对未初始化的字节大喊大叫

Valgrind 抛出这个错误: ==11204== 系统调用参数 write(buf) 指向未初始化的字节==11204== 在 0x4109033:写入(在/lib/libc-2.13.so 中)==11204== 由 0x8049654: main (mmboxman.c:289)==11204== 地址 0xbe92f861 在线程 1 的堆栈上==11204== 有什么问题吗?我找不 ..
发布时间:2021-09-15 20:44:37 其他开发

终止在 valgrind 中运行的进程

杀死 valgrind 进程本身不会留下关于内部进程执行情况的报告. 是否可以向在 valgrind 内部运行的进程发送终止信号? 解决方案 没有“内部进程",因为 valgrind 本身和它运行的客户端程序都在单个进程中执行. 发送到该进程的信号将照常传递到客户端程序.如果该信号导致进程终止,则 valgrind 的正常退出处理程序将运行并(例如)报告任何泄漏. 例如, ..
发布时间:2021-09-15 20:44:34 其他开发

valgrind,分析计时器已过期?

我尝试使用 valgrind 分析一个简单的 c prog: [zsun@nel6005001 ~]$ valgrind --tool=memcheck ./fl.out ==2238== Memcheck,内存错误检测器 ==2238== 版权所有 (C) 2002-2009 和 GNU GPL,由 Julian Seward 等人 ==2238== 使用 Valgrind-3.5. ..
发布时间:2021-09-15 20:44:28 其他开发

你如何让 Valgrind 显示行错误?

您如何让 Valgrind 准确显示发生错误的位置?我编译了我的程序(在 Windows 机器上通过 PuTTy 通过 Linux 终端)添加了 -g 调试选项. 当我运行 Valgrind 时,我得到了 Leak 和 Heap 摘要,而且我确实丢失了内存,但是我从来没有得到关于它发生在哪里的信息(文件名、行).分配内存后,Valgrind 不应该告诉我在哪一行,它稍后无法释放吗? ==1 ..
发布时间:2021-09-15 20:44:26 其他开发

valgrind 可以输出部分报告而不必退出分析的应用程序吗?

我想用 valgrind 检查一个长时间运行的进程是否存在内存泄漏.我怀疑我所追求的内存泄漏可能只有在执行几个小时后才会发生.我可以在 valgrind 下运行应用程序并获取 valgrind 日志,但这样做意味着我必须退出应用程序并重新启动它以进行新的 valgrind 会话,但我仍然需要等待几个小时.是否有可能保持 valgrind 和应用程序运行并在执行过程中的任何时候仍然获取 valgri ..
发布时间:2021-09-15 20:44:19 其他开发

如何通过获取指令类型细分来表征工作负载?

我想获取测试程序中内存读写指令的百分比,最好是动态的.除了计算 gdb asm 转储中的指令(无论如何都是静态的)之外,还有没有更简单的方法来获取它?Valgrind 提供总堆使用量.Perf 有一些不错的功能,但不支持 WSL.Pin 有说明count 功能,但我不确定它是否支持 WSL. 解决方案 (更新:据报道 PIN 在 WSL 下不起作用.但它不需要性能计数器,因此它在 VM 或 ..

有人在使用 valgrind 和 Qt 吗?

我正在尝试使用 Qt/C++ 调试大型应用程序构建,而 valgrind 报告来自 Qt 内部内容的大量内存泄漏.任何人都可以为 Qt 应用程序共享适当的 valgrind 抑制文件吗? 谢谢! 例如 #include int main(){QObject o;返回0;} 返回: $ valgrind --leak-check=full --show-reachable=yes ..
发布时间:2021-09-15 20:44:12 其他开发

Valgrind:可能丢失可以被视为绝对丢失吗?

我可以处理“可能丢失"的 Valgrind memcheck 的输出吗?像“肯定输了"? 可能丢失,或“可疑":找到指向块内部的指针.指针最初可能指向开始和已经被移动了,或者它可能完全不相关.内存检查认为这样的块是“可疑的",因为不清楚是否指向它的指针仍然存在. 肯定丢失,或“泄露":最坏的结果是找不到指向块的指针.该块被归类为“泄漏",因为程序员不可能在程序中释放它退出,因为不存在指 ..
发布时间:2021-09-15 20:44:09 其他开发

Valgrind Massif 工具输出图形界面?

我使用 Valgrind 3.3.1 和 Massif 工具来分析 C++ 应用程序的堆,我想知道是否有图形工具检查文本输出文件. 感谢您的任何建议. 解决方案 对于仍然对 Valgrind 的 Massif 图形输出感兴趣的其他人,请考虑 massif-visualizer,很漂亮. 您可以在 KDE-Apps 找到项目页面. 对于 Ubuntu,你应该从 source ..
发布时间:2021-09-15 20:44:06 其他开发

valgrind 是如何工作的?

有人可以快速解释一下 Valgrind 的工作原理吗?一个例子:它如何知道内存何时被分配和释放? 解决方案 Valgrind 基本上是在“沙箱"中运行您的应用程序.在此沙箱中运行时,它能够插入自己的指令以进行高级调试和分析. 来自手册: 然后,您的程序将在 Valgrind 内核提供的合成 CPU 上运行.当新代码第一次执行时,内核将代码交给选定的工具.该工具向其中添加了自己的 ..
发布时间:2021-09-15 20:44:04 其他开发

是否可以让 valgrind 忽略某些库?

或者最好是全部而不是我的代码?我的程序使用 Gtk、Loudmouth 和其他一些东西,这两个(以及它们背后的一些,libgcrypto、libssl)本身导致了很多错误,我无法检测到我自己的错误.是否有可能让 valgrind 忽略来自比我自己的代码更深的东西? 解决方案 您可以为库的错误生成抑制,但我认为您通常不能排除库. 此外,也很难自动知道库中的内存错误是否由代码中的问题引起 ..
发布时间:2021-09-15 20:44:01 其他开发

当我尝试使用 struct 运行程序时出现分段错误(核心转储)

我需要读取一个文件并将文件中的数据存储到一个结构中.文件的第一行包含我必须动态分配的结构数组的大小. 412/04/2010面试很顺利,我觉得,虽然被告知要穿鞋.18/04/2010医生建议我专心做某事……我忘记了.03/05/2010今天被问到我是不是一个艺术展览.19/05/2010显然泥饼不是由泥或愤怒的黄蜂制成的. 我要在 Windows 中完美地运行我的代码,但是当我在 Unix ..
发布时间:2021-09-14 19:59:42 服务器开发

如何在需要超级用户权限的程序上运行 Valgrind?

我正在用 C 语言编写数据包嗅探器(使用 libpcap),但我无法使用 Valgrind 来查找程序中的内存泄漏,因为它必须以超级用户权限运行,因为如果没有这个,我什至无法打开用于捕获的网络接口. 当我尝试使用 sudo 运行 Valgrind 时,我得到了这个: $ valgrind sudo ./[exec]==5211====5211== 警告:无法执行 setuid/setgid ..
发布时间:2021-09-01 18:51:45 其他开发

std::string 内存泄漏

我有这个类 AppController 和函数 connectPlayer: /* AppController.h */类 AppController{//其他一些声明...私人的:静态常量字符串标签;};/* AppController.cpp */#include "AppController.h"const string AppController::TAG = "AppControlle ..
发布时间:2021-08-30 18:58:41 C/C++开发

Valgrind 未显示错误使用 c_str() 的无效内存访问

想象一下这样的代码: 字符串 f(){字符串 r = "ab";返回 r;}int main() {const char *c = f().c_str();printf("%s.\n", c);返回0;} 这段代码可能会崩溃,对吧?因为 c 指向的那个字符串被破坏了.但是通过 Valgrind 运行它不会显示任何无效的内存访问.为什么?我知道 Valgrind 无法检查堆栈,但“ab"实际上位 ..
发布时间:2021-08-30 18:58:26 C/C++开发

跟踪未初始化的静态变量

我需要调试一个丑陋而庞大的数学 C 库,可能曾经由 f2c 生成.代码滥用了local 静态变量,不幸的是,它似乎在某处利用了这些自动初始化为 0 的事实.如果使用相同的输入调用其入口函数两次,则会给出不同的结果.如果我卸载库并重新加载它,它可以正常工作.它需要很快,所以我想摆脱加载/卸载. 我的问题是如何使用 valgrind 或任何其他工具来发现这些错误,而无需手动遍历整个代码. ..
发布时间:2021-08-30 18:30:32 其他开发