admin管理员组文章数量:1130349
Valgrind 学习篇 – memcheck
瓦尔格隆德
本文只是对memcheck进行学习
学习资料:
官网主页: http://valgrind/
Valgrind用户手册 : http://valgrind/docs/manual/manual.html
CSDN 博文 :
https://blog.csdn/andylauren/article/details/93189740
https://blog.csdn/u010122972/article/details/78214174
一、Valgrind
Valgrind是GPL的系统,用于调试和分析Linux程序。
- 自动检测许多内存管理和线程错误;
- 执行非常详细的性能分析;
- 可以在没有源代码的程序上使用Valgrind
- Valgrind可在几种流行的平台上运行,例如 x86/Linux, AMD64/Linux and PPC32/Linux
二、Valgrind的工具套件 (Tool Suite)
2.1 Memcheck
内存检查
Memcheck可检测内存管理问题,并且主要针对C和C++程序。在Memcheck的监视下运行程序时,将检查所有内存读取和写入,并拦截对malloc / new / free / delete的调用。
- 访问它不应该访问的内存(尚未分配的区域,已释放的区域,堆块末尾的区域,堆栈的不可访问区域)。
- 以危险的方式使用未初始化的值。
- 泄漏内存。
- 释放堆块的不良释放(两次释放,不匹配的释放)。
- 将重叠的源和目标内存块传递给memcpy()和相关函数。
重叠src和 dst指针 memcpy以及相关功能。
Memcheck会在发生这些错误时立即报告这些错误,并给出发生错误的源代码行号,以及为达到该行而调用的函数的堆栈跟踪。
- Memcheck运行的程序比正常运行慢大约10–30倍。
- Memcheck不对全局数组或堆栈数组进行边界检查。
- 检查所有支持的动态链接库(包括C库,图形库等)中的代码。
2.2 Cachegrind
Cachegrind是一个缓存分析器。它可以对CPU中的I1,D1和L2缓存进行详细的仿真,因此可以准确地指出代码中的缓存未命中源。
2.3 Callgrind
它提供了Cachegrind所做的所有信息,以及有关调用图的其他信息。
2.4 Massif
Massif是堆分析器。包括有关程序的哪些部分负责最多内存分配的信息。
2.5 Helgrind
Helgrind是一个线程调试器,可在多线程程序中查找数据竞争。
2.6 等等其他tool
三、文档
http://valgrind/docs/manual/QuickStart.html
用户文档: http://valgrind/docs/manual/manual-core.html
四、一个运行示例 (An Example Run)
4.1 安装
安装包网址 : http://www.valgrind/downloads/current.html
或者
git clone git://sourceware/git/valgrind.git
下载源码、下载文档
tar jxvf valgrind-3.15.0.tar.bz2
cd valgrind-3.15.0/
./configure
make
make install
//验证是否安装成功
valgrind --version
4.2 写源码
#include <stdio.h>
#include <unistd.h>Valgrind 学习篇 – memcheck
瓦尔格隆德
本文只是对memcheck进行学习
学习资料:
官网主页: http://valgrind/
Valgrind用户手册 : http://valgrind/docs/manual/manual.html
CSDN 博文 :
https://blog.csdn/andylauren/article/details/93189740
https://blog.csdn/u010122972/article/details/78214174
一、Valgrind
Valgrind是GPL的系统,用于调试和分析Linux程序。
- 自动检测许多内存管理和线程错误;
- 执行非常详细的性能分析;
- 可以在没有源代码的程序上使用Valgrind
- Valgrind可在几种流行的平台上运行,例如 x86/Linux, AMD64/Linux and PPC32/Linux
二、Valgrind的工具套件 (Tool Suite)
2.1 Memcheck
内存检查
Memcheck可检测内存管理问题,并且主要针对C和C++程序。在Memcheck的监视下运行程序时,将检查所有内存读取和写入,并拦截对malloc / new / free / delete的调用。
- 访问它不应该访问的内存(尚未分配的区域,已释放的区域,堆块末尾的区域,堆栈的不可访问区域)。
- 以危险的方式使用未初始化的值。
- 泄漏内存。
- 释放堆块的不良释放(两次释放,不匹配的释放)。
- 将重叠的源和目标内存块传递给memcpy()和相关函数。
重叠src和 dst指针 memcpy以及相关功能。
Memcheck会在发生这些错误时立即报告这些错误,并给出发生错误的源代码行号,以及为达到该行而调用的函数的堆栈跟踪。
- Memcheck运行的程序比正常运行慢大约10–30倍。
- Memcheck不对全局数组或堆栈数组进行边界检查。
- 检查所有支持的动态链接库(包括C库,图形库等)中的代码。
2.2 Cachegrind
Cachegrind是一个缓存分析器。它可以对CPU中的I1,D1和L2缓存进行详细的仿真,因此可以准确地指出代码中的缓存未命中源。
2.3 Callgrind
它提供了Cachegrind所做的所有信息,以及有关调用图的其他信息。
2.4 Massif
Massif是堆分析器。包括有关程序的哪些部分负责最多内存分配的信息。
2.5 Helgrind
Helgrind是一个线程调试器,可在多线程程序中查找数据竞争。
2.6 等等其他tool
三、文档
http://valgrind/docs/manual/QuickStart.html
用户文档: http://valgrind/docs/manual/manual-core.html
四、一个运行示例 (An Example Run)
4.1 安装
安装包网址 : http://www.valgrind/downloads/current.html
或者
git clone git://sourceware/git/valgrind.git
下载源码、下载文档
tar jxvf valgrind-3.15.0.tar.bz2
cd valgrind-3.15.0/
./configure
make
make install
//验证是否安装成功
valgrind --version
4.2 写源码
#include <stdio.h>
#include <unistd.h>版权声明:本文标题:Valgrind 学习篇 -- memcheck 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1758676326a2782730.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论