【发布时间】:2020-04-09 20:10:50
【问题描述】:
我编写了一个小代码来验证 Valgrind 是否能够检测到一些无效读取,看起来它没有检测到它。可以这样做吗?
int a[2];
printf("test %d", a[100]);
如果将数组交换为动态分配,那么 Valgrind 工作正常。 (大小为 4 的无效读取)
【问题讨论】:
标签: valgrind
我编写了一个小代码来验证 Valgrind 是否能够检测到一些无效读取,看起来它没有检测到它。可以这样做吗?
int a[2];
printf("test %d", a[100]);
如果将数组交换为动态分配,那么 Valgrind 工作正常。 (大小为 4 的无效读取)
【问题讨论】:
标签: valgrind
valgrind --tool=memcheck(默认工具)不会检测到此类问题。
有一个实验工具 valgrind --tool=exp-sgcheck 以检测此类错误为目标,但从未奏效 正确,并且该工具可能会从 valgrind 发行版中删除。
据我所知,gcc/clang sanitizer 是用于检测此类错误的技术。
【讨论】: