如何记录特定内存位置的写入时间和功能?

时间:2010-03-31 13:55:24

标签: c++ visual-studio memory-corruption

我有一个很少发生的错误,但崩溃了我的C ++程序。似乎我有一个缓冲区溢出问题或类似的东西。我发现这些类型的bug最难诊断。

由于内存位置相同,我的程序总是崩溃。是否有一些调试工具可以检测特定内存位置何时被写入并记录执行该功能的函数?

我正在使用Visual Leak Detector(VLD)进行内存泄漏搜索,效果很好。它替换了它自己的原始malloc并记录每个分配。我想知道是否有类似内存的东西?

我知道类似的东西会削弱程序,但它可能真的很有帮助。

我正在使用Visual Studio 2008。

3 个答案:

答案 0 :(得分:3)

如果您使用的是Visual C ++,请查找data breakpoints

答案 1 :(得分:2)

许多调试器可以观察特定的内存位置,并在该位置的内容发生更改时中断。不确定您的特定工具链,但gdb肯定支持这一点。

答案 2 :(得分:0)

Valgrind是一个可以检测此类问题的工具。它是免费的,开源的,易于使用。