对于调试 Windows 上的无效内存访问的好方法,我将不胜感激。作为一名 Linux 开发人员,我是 Valgrind 的忠实粉丝。甚至 Duma 和 eFence 也是非常有效的工具。但是在 Windows 上我完全迷失了(WinXP/VS2008)。我尝试了很多工具,试图将我的程序与杜马联系起来,但没有成功。
以下是我遇到的错误的症状:
- 在某些特定配置上的发布模式下崩溃(仅我的数据大小发生变化)
- 当它在 Release 模式下不崩溃时,报告中的测试名称将替换为随机字符。(我正在使用 Boost.Test)
- 调试模式下什么都没有,一切顺利
这绝对听起来像是某处的无效写入/读取,但在发布模式下调试是不可能的,我需要在调试模式下重现崩溃。重新定义新的运算符并尝试模仿 eFence/Duma 的行为是我最好的选择,但我在覆盖它时遇到了麻烦。
到目前为止,我尝试过:
- 记忆博士
- 标志
- 应用验证器
- Duma(不能覆盖 malloc/etc..)
如果有人可以在那里给我小费,我将不胜感激,因为我已经有一段时间没有尝试解决这个问题了。
提前致谢。