Dr.Memory介绍

一、简介

Dr.Memory是一个内存错误检查工具,主要检查的内存错误有(uninitialized memory, accesses to unaddressable memory (including outside of allocated heap units and heap underflow and overflow), accesses to freed memory, double frees, memory leaks, and (on Windows) handle leaks)

Dr.Memory的论文Practical Memory Checking with Dr.Memory,发表在CGO-2011上(CCF-B)

Dr.Memory可以运行在多个平台上(Windows, Linux, Mac, or Android on commodity IA-32, AMD64, and ARM hardware)


二、安装

DrMemory-download中下载Dr.Memory的压缩包

Dr.Memory不需要编译安装,解压后在DrMemory-Linux-2.0.1-2/bin目录下有drmemory的可执行文件。

官网[1] 上说对于32位的程序,Dr. Memory能追踪和报告更多类型的内存错误。所以建议你最好能建立和运行32位应用程序。在64位的Ubuntu操作系统上,你可能会想安装这些额外的软件包:

sudo apt-get install g++-multilib

因此,如果想让Dr.Memory分析32位程序,可以在编译选项中使用-m32. 

并且,对于所有(32/64位)程序,在编译时都需要加上-g选项。

对于单个C/C++程序,即gcc/g++ -g -o myprog myprog.c

对于一个软件:./configure CFLAGS="-g" CXXFLAGS="-g" LDFLAGS="-g"

编译成32位程序: ./configure CFLGAS="-g -m32" CXXFLAGS="-g -m32"


三、使用

通用命令:

./DrMemory-Linux-2.0.1-2/bin/drmemory -brief --  myprog  arg1 arg2 [input]

比如对于二进制程序exiv2来说,

./DrMemory-Linux-2.0.1-2/bin/drmemory -brief --  /usr/local/bin/exiv2 -pv  input_1

屏幕上会打印出检查结果,并且会自动保存结果文本到改目录下: xx/DrMemory-Linux-2.0.1-2/drmemory/logs/DrMemory-exiv2.49297.000/results.txt

上图是对编译成64位的exiv2的测试结果,经测试,在本次实验中,32位和64位的程序的检测结果并无较大差别。(系统环境ubuntu 16.04 64位)

参考资料

[1] http://drmemory.org/chinese.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,549评论 3 53
  • 你遇到过这样的极品么? 男人如果不会撩妹,那就等于花样作死。下场好一点的呢,姑娘们礼貌地拒绝:“我们不合适”。曾经...
    末世婉儿阅读 4,265评论 0 1
  • 高尔基说生活之所以美好,就在于我们有一颗年轻善良的心在成长开花,如果它在你面前稍加披露你就会从中看到它对你微笑。人...
    田埂上的菊阅读 720评论 3 3
  • 高楼林立,像春笋鳞次栉比冲破牢笼 瓯江泛黄,被无限延伸的桥占领 白鹭已经失去平稳的轨迹 远山和近岭不再适合它优美的...
    茂子123阅读 339评论 1 4
  • 1.感谢丹姐义务给我们分享工作经验,教练语言用的特别好 2.感谢燕子姐帮我分享朋友圈,每一个都是爱的感召呀 3.感...
    肖馨肖馨阅读 273评论 0 2

友情链接更多精彩内容