valgind的使用
来源:互联网 发布:小号淘宝买一分钱 编辑:程序博客网 时间:2024/05/30 04:58
介绍:
valgrind是一个在linux下极其有用的工具。他通过伪造malloc()监控分配在堆上的数据。当(目标)程序想要分配堆存储器时,valgrind将会拦截(目标程序)的malloc()和free()的调用,然后运行自己的malloc()和free()。valgrind的malloc()会记录调用它的是哪段代码和分配了哪段存储器。程序结束时,valgrind会汇报堆上有哪些数据,并告诉你这些数据是由哪段代码创建的。
下面来使用valgrind
1)下载valgrind的源代码
http://www.valgrind.org/downloads/current.html
2)解压,并编译这些代码(因为我是OSX,所以多了一条选择Xcode来编译的语句),可能会因为权限问题,所以先切换到root
sudo -i
tar -jxvf valgrind-3.9.0.tar.bz2
cd valgrind-3.9.0
./configure
sudo xcode-select-switch /Applications/Xcode.app/Contents/Developer
make
make install
make install成功之后,查看一下当前valgrind的版本、查看一下帮助:
3)写一个malloc,但是没有free的例子
4)编译上面的程序
使用如下命令,启动程序:
valgrind --leak-check=full./memory_leaks_test
上图所说,有一个内存出现泄漏definitely lost表示,泄漏了10bytes的内存
5)加上对应的free之后,再次使用
valgrind--leak-check=full ./memory_leaks_test
启动程序,可以看到已经没有errors了
FROM: http://blog.csdn.net/zengraoli/article/details/19540705
- valgind的使用
- valgind的使用
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- 数据的update/insert, 可以用BATCH UPDATE方法
- js对表单设置了readonly和disabled后的区别
- 在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
- 导入mongo数据库
- UITableViewController和UIRefreshControl实现下拉刷新功能
- valgind的使用
- 多谐振荡发生器_20151224
- suse防火墙关闭
- 2015年回顾和2016年规划
- elasticsearch节点不能自动进入集群
- 归并排序
- AngularJs数据渲染到视图后再执行操作
- mysql 获取当前日期及格式化(一)
- virtualbox虚拟机设置静态IP的桥接模式配置