valgrind - Valgrind 可以检测到堆栈变量上的无效读取吗
问题描述
我写了一个小代码来验证 Valgrind 是否能够检测到一些无效读取,看起来它没有检测到它。可以这样做吗?
int a[2];
printf("test %d", a[100]);
如果将数组交换为动态分配,那么 Valgrind 工作正常。(大小为 4 的无效读取)
解决方案
valgrind --tool=memcheck(默认工具)不会检测到此类问题。
有一个实验性工具 valgrind --tool=exp-sgcheck 旨在检测此类错误,但它从未正常工作,并且该工具可能会从 valgrind 发行版中删除。
据我所知,gcc/clang sanitizer 是用于检测此类错误的技术。
推荐阅读
- python - 解包嵌套记录时出现 KeyError
- r - 拉出单词后的下一个数字 - R regex
- ruby-on-rails - Ruby on Rails - node_modules 文件太大
- javascript - 使用 React 的路由离开页面后的浏览器 BackButton
- javascript - switchMaxMin-Java 脚本
- reactjs - 在重新渲染之间保留回调
- playwright - 如何在剧作家测试中忽略网站控制台错误?
- jenkins - 使用来自 Jenkins 控制台的数据为管道项目显示有关 Jenkins UI 的报告
- ios - 如何在 SwiftUI 中创建彼此分开的列表行
- azure - 如何使用 AZ Powershell 获取 VMSize 的成本/月?