猿问

如何调试堆损坏错误?

如何调试堆损坏错误?

我在Visual Studio 2008下调试一个(本机)多线程C ++应用程序。在看似随机的场合,我得到一个“Windows触发了一个断点......”错误,并注意到这可能是由于堆。这些错误并不会立即使应用程序崩溃,尽管它很可能会在之后崩溃。

这些错误的一个大问题是它们只在实际发生损坏后弹出,这使得它们很难跟踪和调试,尤其是在多线程应用程序上。

  • 什么样的事情会导致这些错误?

  • 我该如何调试它们?

提示,工具,方法,启发......欢迎。


ITMISS
浏览 692回答 3
3回答

慕尼黑5688855

您可以通过为应用程序启用Page Heap来检测大量堆损坏问题。为此,您需要使用gflags.exe作为Windows调试工具的一部分运行Gflags.exe并在可执行文件的映像文件选项中,选中“启用页面堆”选项。现在重新启动exe并附加到调试器。启用页堆后,只要发生堆损坏,应用程序就会进入调试器。

侃侃无极

一篇非常相关的文章是使用Application Verifier和Debugdiag调试堆损坏。
随时随地看视频慕课网APP
我要回答