当某个特定的内存位置被写入时如何记录,以及由哪个函数记录? 我有一个非常罕见的错误,但是我的C++程序崩溃了。似乎我有缓冲区溢出问题或类似的问题。我发现这些类型的错误是最难诊断的

当某个特定的内存位置被写入时如何记录,以及由哪个函数记录? 我有一个非常罕见的错误,但是我的C++程序崩溃了。似乎我有缓冲区溢出问题或类似的问题。我发现这些类型的错误是最难诊断的,c++,visual-studio,memory-corruption,C++,Visual Studio,Memory Corruption,我的程序总是因为同一个损坏的内存位置而崩溃。是否有一些调试工具可以检测特定内存位置何时被写入并记录执行该操作的函数 我正在使用可视泄漏检测器(VLD)来查找内存泄漏,效果非常好。它替代了它自己的原始malloc,并记录每个分配。我想知道是否有类似的记忆 我知道这样的事情会破坏一个程序,但它可能真的很有帮助 我使用的是Visual Studio 2008。许多调试器可以查看特定的内存位置,并在该位置的内容发生更改时中断。不确定你的特定工具链,但是 GDB 当然支持。 < P>如果你使用Visual

我的程序总是因为同一个损坏的内存位置而崩溃。是否有一些调试工具可以检测特定内存位置何时被写入并记录执行该操作的函数

我正在使用可视泄漏检测器(VLD)来查找内存泄漏,效果非常好。它替代了它自己的原始malloc,并记录每个分配。我想知道是否有类似的记忆

我知道这样的事情会破坏一个程序,但它可能真的很有帮助


我使用的是Visual Studio 2008。

许多调试器可以查看特定的内存位置,并在该位置的内容发生更改时中断。不确定你的特定工具链,但是<代码> GDB 当然支持。

< P>如果你使用Visual C++,然后查找。

是一个工具,可以检测这样的问题。它是免费的、开源的、易于使用的。

gdb的脚本在这里特别有用。我正在使用VS 2008进行这个项目。我一分钟前刚刚找到它,不过还是要谢谢你!在发布之前应该在谷歌上搜索一下…@Matthieu:(关于编辑评论)gcc和gdb在Windows、BSD和OSX上也很好用!:)但是,如果使用不同的编译器,内存损坏问题是否有不同的风险?我一直认为gdb需要使用gcc://@Matthiew:编译程序,实际上,大多数情况下是这样的(但真正的要求是,如果您想使用调试符号格式,必须能够读取它们)。我不是建议rusbi应该接受gdb的答案,但拥有它仍然很有用,因为那些不使用VS的人在发现这个问题时会发现它很有用。该评论是一个友好的嘲讽,因为您暗示gcc只在Linux上运行。