最近mips板子上一个程序有内存错误,但是很隐蔽,而且不好重现,在网上搜索了内存检测的工具,选择了valgrind工具,在虚拟机上测试了几个小程序,感觉不错,于是决定编一个交叉valgrind出来,历尽千辛万苦,虽然解决了一些问题,但是还是没有最终解决问题。
在这里先将已经解决的问题的方法献给大家。
问题1. 'optimize' attribute directive ignored
configure的过程这里不再赘述。在make的时候遇到了如下错误,编译停止不前,一直停留在这里。
drd_clientreq.c:79: warning: 'optimize' attribute directive ignored
解决方法,修改drd目录下的Makefile,将DRD_CFLAGS的优化选项由-O2改为-O1。
DRD_CFLAGS = \
--param inline-unit-growth=900 \-O1 \
-Wextra \
-Wformat-nonliteral \
-Wno-inline \
-Wno-unused-parameter
问题2. valgrind: failed to start tool 'memcheck-mips-linux' for platform 'mips32-linux': No such file or directory
在解决了问题1后,编译成功,make install之后,去安装目录下的bin目录,将valgrind拷贝到目标机上。在运行#./vargrind ./memleak的时候,遇到了:
valgrind: failed to start tool 'memcheck-mips-linux' for platform 'mips32-linux': No such file or directory
于是去虚拟机的安装目录下的lib目录,找到 lib/valgrind/memcheck-mips32-linux,上传到目标机上。
再次执行&#x