valgrind在3.8.0后开始支援mips,从3.9.0开始支援mips dsp ase。但release上3.9.0 使用mips编译出来会在linux
VG_(machine_get_hwcaps)(void) __asm__ __volatile__(.word 0x7d095351); /*precr.qb.ph t2,t0,t1*/
检测CPU的时候使用DSP ASE的指令而致使在报错误指令crashshell
所以要在通常的mips上使用valgrind,须要使用3.8.0版本code
1.下载http://valgrind.org/downloads/valgrind-3.8.0.tar.bz2ip
2.编译,在README.mips中有详细说明,简要以下
内存
./configure --host=mips-linux-gnu --prefix=<path_to_install_directory> CFLAGS="-mips32r2 -mplt -EL" make install -j 8
3.编译注意事项:开发
a. mips内核大小端是可配置的,须要根据使用的芯片的大小端,配置编译选项,好比我使用的是小端就加入 -EL
b. gcc编译器版本低于4.5.1,编译选项加入"-mips32r2 -mplt",这个在README.mips里面有提到get
因为valgrind很是吃内存,所以并不太适合内存有限的嵌入式上使用,我原本是打算编译出来给公司用的,不过编译出来后放到公司的平台上跑开发的应用内存不够,产品卡成本,连开发板的内存都是卡了的。网上看valgrind使用的内存是监控程序的2倍。
编译器