0

默认情况下,在为 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)
4

1 回答 1

0

作为一种解决方法--ignore-range-below=44-13,可以使用 valgrind 参数。
正如约翰·赖泽所说:

使用 --ignore-range-below-sp 确实可以减少噪音,但有忽略该范围内引用的实际错误的危险。

这个问题的完整描述可以在Valgrind-users mailing list的主题下找到:

[Valgrind-users] Valgrind 在 imx6 平台上无法正常工作

于 2017-09-07T16:38:47.090 回答