dmalloc在嵌入式的开发板上的应用

下面是我实际在开发环境里面做的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)

时间: 2024-09-28 20:59:44

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

将sqlite3移植到嵌入式Linux开发板M6708上

最近,因为项目的需要,我们购买了广州致远电子有限公司的M6708-T工控板(预装Linux系统),准备将sqlite3移植到本嵌入式开发板上.笔者参考了网上的很多文章,均无法达到成功移植的目的.在多方摸索之下,终于采用了一种简单的方法成功实现了移植.本文介绍如何成功地将sqlite3移植到M6708-T工控板上,可供相关的开发人员参考. 准备工作 在本机上安装好Linux系统(一般都是安装在虚拟机上面的),并按照工控板的用户手册在Linux系统上安装交叉开发的工具链. 将工控板上电,能够通过串口

如何将sqlite数据库移植到ARM开发板上

近段时间在学数据库,因为自身需求,所以注重研究了点嵌入式sqlite数据库, SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它, 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统, 同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口, 同样比起Mysql.PostgreSQL这两款开源世界著名的

DHCP:解析开发板上动态获取ip的2种实现方法详解_C 语言

DHCP动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:1.给内部网络或网络服务供应商自动分配IP地址2.给用户给内部网络管理员作为对所有计算机作中央管理的手段. 方法一:dhclient    1.下载    https://www.isc.org/software/dhcp/2.解压    tar-zxvf dhcp-3.1.3.tar.gz3.配置    cddhcp-3.1.

ARM开发板上QT5 中 OSD显示的问题 具体如下

问题描述 ARM开发板上QT5 中 OSD显示的问题 具体如下 各位 ,我现在做一个视频监控类的东西,在IMX6的开发板上移植了QT5.4 用于GUI界面的显示, 然后用IMX6的/dev/vidio17作为视频的输出到fb0,现在要求视频显示在底层,GUI显示在上层,GUI的背景我设置为透明的,这样可以看到后面的视频,IMX6有两层fb0和fb1 但是现在的情况视频老是挡住GUI 我明明通过 export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1指定输出到fb1

在icool6410开发板上从SD卡booting失败, 怎么解决

问题描述 在icool6410开发板上从SD卡booting失败, 怎么解决 我几天前买一个开发板,当出板上已经安装了wince.我想安装Android 所以按照手册的指示进行booting操作.首先,我准备了一个TF卡, 卡上面写着"micro SD HC 2GB""字.我用irom fusing tool 软件把uboot256-sd.bin文件写了在tf card.把开发板的boot pin设置1111 TF card 启动方式.开发板和PC连接以后, 上电!不过, 通

arm-ARM11开发板上insmod模块加载出错

问题描述 ARM11开发板上insmod模块加载出错 我在PC机上先编译好模块,然后移到开发板上,首次insmod成功. 然后我rmmod模块也成功了.但是当我再次insmod同一个模块时候报错. insmod: can't insert 'test.ko': File exists 试了多个模块都是这样的现象. 解决方案 http://bbs.csdn.net/topics/330145531 解决方案二: 你确定你rmmod成功了吗,lsmod看看 解决方案三: lsmd 应该还在

交叉编译-V412 编程 运行在开发板上出现段错误

问题描述 V412 编程 运行在开发板上出现段错误 最近在做摄像头模块编程 : 对于库的移植 1.libjpeg生成的lib ,将该目录下的 库文件所有拷贝到nfsdir中的lib目录中(/home/nfsdir/lib) 2.libjpeg生成的lib, 将该目录下的 库文件所有拷贝到交叉工具链 lib (/home/farsight/env_item/toolchain-4.5.1-farsight/arm-none-linux-gnueabi/sys-root/lib/ ) 目录下 3.l

物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上

http://blog.csdn.net/hellochina15/article/details/49722815 在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到github上(github.com/hellox-project/HelloX_OS),欢迎感兴趣的朋友下载测试. MinnowBoardMAX是在Intel的支持下,由Circu

6410 安卓开发板 录音-6410开发板上跑Android 2.1 ,录音出现问题,求大神指点

问题描述 6410开发板上跑Android 2.1 ,录音出现问题,求大神指点 我在6410的开发板上运行 Android 2.1,写了个程序 ,想要进行录音.代码 如下:mediaRecorder = new MediaRecorder(); Toast.makeText(TelListenner.thisnew MedioRecorder()成功"" Toast.LENGTH_SHORT).show(); //myRecAudioFile = File.createTempFile