dmalloc实例测试
编译生成的dmalloc文件放到output目录下(此处只是为了测试,根据自己的情况放在哪都行,只要自己能找到就ok)
准备:
提前将test程序文件夹挂载到arm设备的tmp目录下(目的是为了将生成的crash文件保存下来)
(1)在设备中进入output/bin/下执行:
./dmalloc -l /tmp/dmalloc_crash_test.log -i 100 low
(2)根据输出的DMALLOC_OPENTIONS修改代码:加入如下两行
注:引用dmalloc的头文件,会在日志中显示具体的行号,精确到第几行代码;也可以不引用dmalloc头文件,log中会显示malloc的地址;
test.c如下:
(3)Makefile如下:
(4)将程序编译好,在设备中执行./test之后,会在/tmp目录下生成dmalloc_crash_test.log文件如下:
可以根据提示的代码位置test.c的14行的内存,存在堆溢出问题;
分析代码可知,是for循环写超了10个字符,踩了后面的内存导致的。