内存检测工具Dr. Memory的使用
2016-06-10 11:47
399 查看
Dr. Memory是一个内存调试工具,它是一个开源免费的内存检测工具,它能够及时发现内存相关的编程错误,比如未初始化访问、内存非法访问、数组越界读/写、以及内存泄露等。它可以在Linux、Windows、Mac OS和Android操作系统上使用。关于Dr. Memory的更多说明可以参考其主页:http://drmemory.org/
下面简单说下其在Windows7上的使用过程:
1. 从https://github.com/DynamoRIO/drmemory/wiki/Downloads上下载最新版本1.10.1的压缩包DrMemory-Windows-1.10.1-3.zip (若官网下不下来可以从http://download.csdn.net/detail/fengbingchun/9545410下载),解压缩;
2. 新建DrMemory控制台工程,测试代码如下:
3. 将DrMemory解压缩后存放到E:\GitCode\DrMemory-Windows-1.10.1-3 下,通过命令提示符打开bin/drmemory.exe或bin64/drmemory.exe,然后输入命令如下图所示,目前DrMemory仅能检测32位程序,调用64位程序检测不出任何问题,如图1中红框所示。执行完后会在E:\GitCode\DrMemory-Windows-1.10.1-3\drmemory\logs\DrMemory-DrMemoryTest[dbg_x64_vc12].exe.972.000目录下生成相应的results.txt文本文件,里面记录了更多的细节。
4. test1()的执行结果如下图:
test2()的执行结果如下图:
test3()的执行结果如下图:
test4()的执行结果如下图:
GitHub:https://github.com/fengbingchun/Messy_Test
下面简单说下其在Windows7上的使用过程:
1. 从https://github.com/DynamoRIO/drmemory/wiki/Downloads上下载最新版本1.10.1的压缩包DrMemory-Windows-1.10.1-3.zip (若官网下不下来可以从http://download.csdn.net/detail/fengbingchun/9545410下载),解压缩;
2. 新建DrMemory控制台工程,测试代码如下:
#include <iostream> void test1(); // 内存泄露 void test2(); // 非法访问 void test3(); // 未初始化读 void test4(); // Heap 操作参数错误(Invalid Heap Argument) int main() { // reference: http://www.ibm.com/developerworks/cn/linux/1309_liuming_drmemory/ test4(); std::cout << "ok" << std::endl; return 0; } void test1() { char *ptr; for (int i = 0; i<100; i++) { ptr = (char*)malloc(i); if (i % 2) free(ptr); } } void test2() { char *x = (char*)malloc(8); char c = *(x + 8); // buffer overlow free(x); c = *x; // read free memory } typedef struct T_ { char a; char b; }T; void test3() { T a, b; char x; a.a = 'a'; a.b = 'b'; b.a = x; // error C4700:使用了未初始化的局部变量x,若使vs2013能够正常编译,需将配置属性中的C/C++ SDL检查关闭 if (b.a == 10) memcpy(&b, &a, sizeof(T)); } void test4() { char * ptr = NULL; ptr = new char; free(ptr); free(ptr); // }
3. 将DrMemory解压缩后存放到E:\GitCode\DrMemory-Windows-1.10.1-3 下,通过命令提示符打开bin/drmemory.exe或bin64/drmemory.exe,然后输入命令如下图所示,目前DrMemory仅能检测32位程序,调用64位程序检测不出任何问题,如图1中红框所示。执行完后会在E:\GitCode\DrMemory-Windows-1.10.1-3\drmemory\logs\DrMemory-DrMemoryTest[dbg_x64_vc12].exe.972.000目录下生成相应的results.txt文本文件,里面记录了更多的细节。
4. test1()的执行结果如下图:
test2()的执行结果如下图:
test3()的执行结果如下图:
test4()的执行结果如下图:
GitHub:https://github.com/fengbingchun/Messy_Test
相关文章推荐
- http://www.ybtsoft.com/
- 根据指定路由生成URL |Generating a URL from a Specific Route | 在视图中生成输出URL|高级路由特性
- 数据杂谈
- NOIP模拟题 NBA
- Android IOS JAVA 三个平台通用的MD5加密方式
- Python编码爬坑指南(必看)
- 线性代数 高斯消元!UESTC 算法讲堂。
- 研发招聘之殇
- Android中线程的应用
- Nginx负载均衡
- 进度条14
- bzoj3289
- 【SVN——合作必备】
- 【CSS笔记二】CSS样式基本知识
- 【lightoj】-1294 Positive Negative Sign
- Java三种判断字母大小写的方法
- tableview旋转90度不能对齐
- 【BZOJ4510】[Usaco2016 Jan]Radio Contact【DP】
- 蓝桥杯 李白打酒-递归
- 如何辨别数清冲突域和广播域