下面是我实际在开发环境里面做的dmalloc移植时候的一些随笔

配置PC的dmalloc环境
1. 首先把源码包打开,进入dmalloc文件夹
2. ./configure 配置Makefile,我是加了线程选项的,所以我的是./configure --enable-threads
3. 生成Makefile之后,需要修改makefile里面的编译选项 cc和cxx
   我用的是DM6467的开发环境,所以我的改成了arm_v5t_le-gcc和arm_v5t_le-g++,这里按照各自需要改成交叉编译的命令就好。
4. 然后make
5. make install
到此,环境配置完成

进到我们需要测试内存漏洞的代码,例如我们的代码在test文件夹里,名字叫mem.c。
1. 进入test
2. 用交叉编译工具编译arm_v5t_le-gcc mem.c -o mem -ldmalloc,这里记得加-ldmalloc这个编译选项,这样才能使用dmalloc。
执行成功后,生成的mem拷贝到开发板的某个目录,等待执行。

配置开发板的dmalloc执行环境
1. 从PC的/usr/local/bin 拷贝dmalloc 文件到开发板的目录/bin
2. 从PC的/usr/local/lib 拷贝相关的.a文件到开发板的目录/usr/lib
3. 从PC的/usr/local/include 拷贝dmalloc.h 文件到开发板的目录/usr/include
4. 输入配置文件命令 export DMALLOC_OPTIONS=log=logname,debug=0x3
   这里的logname是一个我们输入的文件,以后的编译debug信息会打印进去,0x3是debug的选项,详细的可以看http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/ELJonline-BRMemory-Leak-Detection-in-Embedded-Systems/  我下面也把编译选项贴过来了。

将上面编译好的mem可执行程序拷贝到我们的开发板上,然后运行。

--------------------------
The following is a list of the tests and the corresponding bits to set in ``debug'':

* none (nil): no functionality (0)

* log-stats (lst): log general statistics (0x1)

* log-non-free (lnf): log non-freed pointers (0x2)

* log-known (lkn): log only known non-freed (0x4)

* log-trans (ltr): log memory transactions (0x8)

* log-admin (lad): log administrative info (0x20)

* log-blocks (lbl): log blocks when heap-map (0x40)

* log-bad-space (lbs): dump space from bad pointers (0x100)

* log-nonfree-space (lns): dump space from non-freed pointers (0x200)

* log-elapsed-time (let): log elapsed time for allocated pointer (0x40000)

* log-current-time (lct): log current time for allocated pointer (0x80000)

* check-fence (cfe): check fencepost errors (0x400)

* check-heap (che): check heap adm structs (0x800)

* check-lists (cli): check free lists (0x1000)

* check-blank (cbl): check mem overwritten by alloc-blank, free-blank (0x2000)

* check-funcs (cfu): check functions (0x4000)

* force-linear (fli): force heap-space to be linear (0x10000)

* catch-signals (csi): shut down program on SIGHUP, SIGINT, SIGTERM (0x20000)

* realloc-copy (rco): copy all re-allocations (0x100000)

* free-blank (fbl): overwrite freed memory space with BLANK_CHAR (0x200000)

* error-abort (eab): abort immediately on error (0x400000)

* alloc-blank (abl): overwrite newly alloced memory with BLANK_CHAR (0x800000)

* heap-check-map (hcm): log heap-map on heap-check (0x1000000)

* print-messages (pme): write messages to stderr (0x2000000)

* catch-null (cnu): abort if no memory available (0x4000000)

* never-reuse (nre): never reuse freed memory (0x8000000)

* allow-free-null (afn): allow the frees of NULL pointers (0x20000000)

* error-dump (edu): dump core on error and then continue (0x40000000)

dmalloc在嵌入式的开发板上的应用的更多相关文章

  1. 嵌入式Linux开发板

    嵌入式Linux开发板开发介绍: iTOP-4412嵌入式Linux开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,独家配备三星S5M8767电源管理,配备Andro ...

  2. FS210开发板上Qt4.7.0移植过程

    作者:冯老师,华清远见嵌入式学院讲师. 1. 搭建Qt开发环境平台 1.开发环境:ubuntu 12.04 2.交叉编译链:arm-cortex_a8-linux-gnueabi 3.开发板:FS21 ...

  3. 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上

    博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813  本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...

  4. 02.将uboot,kernel,rootfs下载到开发板上

    转载,侵删 将uboot,kernel,rootfs下载到开发板上 1.为什么要下载 所谓下载,也称烧录,部署. 1.1.什么是u-boot Hi3518EV200 单板的 Bootloader 采用 ...

  5. 03.将MPP部署到开发板上

    转载侵删 在一般的嵌入式开发中,只要将uboot,kernel,rootfs下载到开发板上,就可以进行程序开发了.但是海思又进一步的把一些常用视频编解码算法等封装到MPP平台中,进一步简化了工程师的开 ...

  6. 在 S5PV210 的 开发板上 使用 串口 收发信息

    参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准 ...

  7. 在 S5PV210 的 开发板上 点亮 一个 LED 灯

    参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准 ...

  8. 使用Xilinx SDSoc在Xilinx zcu102开发板上编程HelloWorld

    关于Xilinx SDSoc的介绍我就不再复述了,我理解的也不一定准确,可以阅读官方文档了解SDSoc,你可以把它理解为一个集成开发环境 (IDE),通过SDSoc我们能够简单快速的对Xilinx的开 ...

  9. 在秉火STM32F429挑战者开发板上移植Huawei LiteOS指南

    昨天在B站上突然看到了一个短视频,是在正点原子的战舰V3开发板上移植华为的Huawei LiteOS操作系统,就是这个视频:看完鸿蒙OS发布会,试用华为的物联网操作系统Lite OS(B站),于是呢, ...

随机推荐

  1. 解决ubuntu终端无法输入中文的问题

    解决ubuntu终端无法输入中文的问题 来源: https://my.oschina.net/lvhongqing/blog/851922 首先把中文语言包安装上 打开 /var/lib/locale ...

  2. Button- 自定义控件添加自定义属性

    今天自定义了一个button按钮,需要添加一个属性,具体步骤如下 1.新属性的信息设定:在values目录下添加attrs.xml文件,在里面添加属性信息 <?xml version=" ...

  3. String类型转Long类型需要注意的问题

    转自:https://blog.csdn.net/m819177045/article/details/52669785/

  4. [NOI2008]假面舞会(DFS)

    Description 一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会.今年的面具都是主办方特别定制的.每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具.每个面具都有一个编号,主办 ...

  5. 解读OpenRTB(实时竞价)生态系统

    最近3年,广告实时竞价(RealTimeBidding)模式逐渐流行起来. 2012年大致了解过,最近一段时间,重新温习下. 半壁江山 生态系统总的来说分为2个部分,卖方和买方. 卖方:媒体,即拥有广 ...

  6. NuGet 使用及dll管理

    NuGet学习笔记(1)——初识NuGet及快速安装使用 作者: 懒惰的肥兔  来源: 博客园  发布时间: 2012-05-20 21:33  阅读: 53168 次  推荐: 33   原文链接  ...

  7. Java中的线程模型及实现方式

    概念: 线程是一个程序内部的顺序控制流 线程和进程的比较: 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大. 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和 ...

  8. php线性表数组实现的删除操作

    php线性表数组实现的删除操作 一.总结 1.array_pop(): 函数删除数组中的最后一个元素. 二.代码 代码一: //线性表的删除(数组实现) function delete_array_e ...

  9. Express框架是什么

    Express框架是什么 一.总结 1.express框架:基于node.js的web应用框架,可快速搭建一个完整功能的网站,丰富的HTTP工具以及来自Connect框架的中间件随取随用. 二.Exp ...

  10. [Angular & Web] Retrieve user data from Session

    Once user sign up, we store the user data inside cookie in the broswer and also keep a memory copy i ...