记录安装使用Valgrind的方法

 

一、安装 Valgrind

安装代码:

 

版本验证:

这里我因为安装过 devtoolset-10 所以他会自带 gcc、gdb、perftools、valgrind 等…

 

二、简单使用

 

进程执行完毕后会输出一些内容

 

明确泄漏(definitely lost):内存还没释放,但已经没有指针指向内存,内存已经不可访问
间接泄漏(indirectly lost):泄漏的内存指针保存在明确泄漏的内存中,随着明确泄漏的内存不可访问,导致间接泄漏的内存也不可访问
可能泄漏(possibly lost):指针并不指向内存头地址,而是指向内存内部的位置
仍可访达(still reachable):指针一直存在且指向内存头部,直至程序退出时内存还没释放。

 

三、进阶教程

使用Massif内存堆栈分析

–massif-out-file 可以设置结果输出到指定文件。

可以使用ms_print工具来查看 massif.out.* 文件的内容。

 

使用 Callgrind 进行内存分析

虽然 Callgrind 主要用于性能分析,但它也可以显示每个函数的内存使用情况。可以使用 Callgrind 来看哪个函数分配了最多的内存。

然后你可以使用 kcachegrind 或其他 Callgrind 数据查看器来查看结果。

比如这里使用 callgrind_annotate 工具:

 

 

四、其他注意事项

应该使用kill的默认参数发送TERM 信号

kill 命令发送信号到指定的进程 ID。例如,kill 12345 会发送 TERM 信号到进程 ID 为 12345 的进程。

【C++】Valgrind 内存泄漏检测工具
Tagged on:     
5 1 投票
Article Rating
订阅评论
提醒

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论