查看“Valgrind”的源代码
←
Valgrind
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
Valgrind 是运行在 Linux 上的一套基于仿真技术的程序调试和分析工具,用于构建动态分析工具的装备性框架。它包括一个工具集,每个工具执行某种类型的调试、分析或类似的任务,以帮助完善你的程序。Valgrind 采用模块化架构,可以容易的创建新的工具而又不会扰乱现有的结构。 {| class="wikitable" |+ |- |Memcheck |检查程序中的内存问题,如泄漏、越界、非法指针等 |- |Callgrind |检查程序中函数调用过程中出现的问题 |- |Cachegrind |分析 CPU cache 命中率、丢失率,用于进行代码优化 |- |Helgrind |检查多线程中的竞争问题 |- |Massif |检查堆栈使用问题 |- |Extension |利用 core 提供的功能,编写特定的内存调试工具 |} === 安装 === # apt install valgrind # valgrind --version valgrind-3.15.0 === 使用 === ==== memcheck ==== 检测程序中出现的内存问题,检测内存读写,捕获 malloc、free、new、delete 等调用。 检测问题: # 使用未初始化的内存 # 读/写释放后的内存块 # 内存读写越界(数组访问越界/访问已经释放的内存),读/写超出 malloc 分配的内存块 # 读/写不适当的栈中内存块 # 内存泄漏,指向一块内存的指针永远丢失 # 不正确的 malloc/free 或 new/delete 匹配(重复释放/使用不匹配的分配和释放函数) # 内存覆盖,memcpy 相关函数中的 dst 和 src 指针重叠 valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --undef-value-errors=no --log-file=svr_vg.log ./XXX summary: # definitely lost: 存在内存泄露 # indirectly lost: 存在内存泄露,与指针结构相关 # possibly lost: 可能存在内存泄露,如一些不符合常规的操作,例如将指针指向某个已分配内存块的中间位置 # still reachable: 可能是没问题,存在没有释放掉一些本可以释放的内存。这种情况是很常见的,通常基于合理的理由 # suppressed: 意味着有些泄露信息被压制了。在默认的 suppression 文件中可以看到一些 suppression 相关设置 如果二叉树的根节点被判定为 definitely lost,则其所有子节点将被判定为 indirectly lost。而如果正确修复了类型为 definitely lost 的根节点泄露,那么类型为 indirectly lost 的子节点泄露也会随着消失。 如果 possibly lost 没有造成内存上的泄露,使用 --show-possibly-lost=no 过滤该类报告信息。--show-reachable=yes 控制是否输出 still reachable 信息。 <small><small><nowiki>==776172== ==776172== Process terminating with default action of signal 2 (SIGINT) ==776172== at 0x4A6A4FF: accept (accept.c:26) ==776172== by 0x111373: main (in /root/socket/svr) ==776172== ==776172== HEAP SUMMARY: ==776172== in use at exit: 13,347,333 bytes in 209,443 blocks ==776172== total heap usage: 242,770 allocs, 33,327 frees, 21,007,508 bytes allocated ==776172== ==776172== LEAK SUMMARY: ==776172== definitely lost: 0 bytes in 0 blocks ==776172== indirectly lost: 0 bytes in 0 blocks ==776172== possibly lost: 288 bytes in 1 blocks ==776172== still reachable: 13,347,045 bytes in 209,442 blocks ==776172== suppressed: 0 bytes in 0 blocks ==776172== Rerun with --leak-check=full to see details of leaked memory ==776172== ==776172== For lists of detected and suppressed errors, rerun with: -s ==776172== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)</nowiki></small></small> [[分类:Linux]]
返回
Valgrind
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
目录
文章分类
侧边栏
帮助
工具
链入页面
相关更改
特殊页面
页面信息