内存检查工具
2023-09-14 08:59:44 时间
内存检测工具主要用于检测程序的堆栈错误。一般的检测方法是通过加magic number来表示正确的内存信息。如果magic number被写坏,那么就表示内存错乱了。
1编译选项:
-fstack-protector -fstack-protector-all
-fstack-protector
在函数的stack上加一个magic number,如果buffer overflows的话,程序直接退出。
函数开始时加入,退出时检测。
*** stack smashing detected ***: ./test terminated
2环境变量
MALLOC_CHECK_检测堆错误。
若将MALLOC_CHECK_设置为0,则在检查到错误时不作任何提示。
若将MALLOC_CHECK_设置为1,则在检查到错误时打印一条信息到标准错误输出。
若将MALLOC_CHECK_设置为2,则在检查到错误时直接调用abort()中止程序。
3 lib :mcheck
在编译时链接 –lmcheck, 会起到和上诉边境变量相同的效果,不过,mcheck这个lib是线程不安全的。
如果出错,程序直接退出,并打印出:memory clobbered before allocated block
3: mudflap
http://gcc.gnu.org/wiki/Mudflap_Pointer_Debugging
使用方法:
1:添加编译选项:-fmudflap
2:添加lib: -lmudflap
3:环境变量export MUDFLAP_OPTIONS=’ options
检查非常严格,任何读写越界都会报错。’
4:mtrace:用于查看内存泄露
使用方法:
1.设置环境变量 MALLOC_TRACE指定程序输出log文件
2.包含mcheck.h文件
3.程序开始时调用 mtrace()
4.运行程序
5.使用mtrace查看log文件
5:dmalloc
需要安装http://dmalloc.com/releases/dmalloc-5.5.2.tgz
使用方法:
1:设置环境变量:
在terminal输入export DMALLOC_OPTIONS=log=logfile, debug=0×3(in Bash)/export
2:在源文件中添加下面的C代码:
#include “dmalloc.h”
值得注意的是:要在每一个.C文件里面添加,而且必须添加在所包含的头文件最后一行!
3编译选项:-DDMALLOC -DDMALLOC_FUNC_CHECK
4:lib:-ldmalloc
6 memwatch:
用于检测内存泄露
memwatch不需要安装,只要下载包解压即可,有用的文件只有memwatch.c&memwatch.h,把这两个文件放入要检测的程序的文件夹中即可。编译的命令为:gcc -DMEMWATCH -DMW_STDIO test.c memwatch.c -o test
7:valgrind:
这个资料比较多。
相关文章
- 非连续内存分配(分页、分段、段页式内存管理)
- iOS/OS X 内存管理(二):借助工具解决内存问题
- Thinkphp下记录和统计时间(微秒)和内存使用情况
- 【JAVA】栈和堆,JVM内存概述
- 利用 Chrome 开发者工具自带的 Memory 工具分析 Node.js 应用的内存分配情况
- paip.mysql 5.6 数据库 占用 内存 过多 的 解决方案
- 使用 Chrome 开发者工具的 Memory 标签页分析内存泄漏问题
- 利用Chrome开发者工具memory comparison分析一个时间段内的JavaScript代码内存占用率
- 关闭IBM HTTP Server插件自动生成服务,以避免部署大量应用时导致Dmgr内存溢出
- python之使用内存读写字符串
- 【Android 内存优化】Bitmap 内存缓存 ( Bitmap 缓存策略 | LruCache 内存缓存 | LruCache 常用操作 | 工具类代码 )
- 【Android 内存优化】使用 Memory Analyzer ( MAT ) 工具分析内存 ( hprof 文件转换 | MAT 工具下载 | MAT 工具使用 )
- SoapUI 增大使用内存
- Java内存泄露监控工具:JVM监控工具介绍【转】
- Android设备内存和SD卡操作工具类
- KVM 虚拟机 调整内存与CPU
- Linux:内存访问问题检查工具valgrind
- linux 内存性能评估工具 free/smem