默认情况下,当为Openwrt进行交叉编译时,IMX6平台的menuconfig中无法选择valgrind,但此平台基于ARM Cortex A9内核,该内核正在实现ARMv7架构。 valgrind支持这种体系结构,所以我在valgrind包的Makefile中做了一些改动,使得可以从menuconfig中选择包并编译。
我使用GCC-5.3和uClibc-0.9.33.2(暂时不能继续使用,因为它非常昂贵)。
问题是valgrind即使对/bin/true
:
valgrind --leak-check=yes /bin/true
输出:
...
==24113== Invalid read of size 4
==24113== at 0x4000E54: ??? (in /lib/ld-uClibc-0.9.33.2.so)
==24113== Address 0x7d99c9f4 is on thread 1's stack
==24113== 20 bytes below stack pointer
...
==24113== For counts of detected and suppressed errors, rerun with: -v
==24113== ERROR SUMMARY: 64 errors from 4 contexts (suppressed: 0 from 0)
答案 0 :(得分:0)
可以使用变通方法--ignore-range-below=44-13
valgrind参数
正如John Reiser所说:
使用--ignore-range-below-sp确实可以减少噪音,但是有 忽略该范围内参考文献的实际错误的危险。
可以在Valgrind-users mailing list主题下找到此问题的完整说明:
[Valgrind-users] Valgrind在imx6平台上无法正常工作