默认情况下,在为 Openwrt 交叉编译时,在 IMX6 平台的 menuconfig 中无法选择 valgrind,但该平台基于实现 ARMv7 架构的 ARM Cortex A9 内核。这个架构是由 valgrind 支持的,所以我对 valgrind 包的 Makefile 做了一点改动,使包可以从 menuconfig 中选择并且可以编译。
我正在使用 GCC-5.3 和 uClibc-0.9.33.2(现在不能继续使用 musl,因为它非常昂贵)。
问题是 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)