内存堆损坏和GFlags / windbg

时间:2012-01-03 10:57:32

标签: c++ windbg

我有一个应用程序,它会产生内存堆异常(损坏)。

在网络上我发现了这样一句话:

  

“GFlags.exe:一个堆调试程序。使用GFlags,你可以建立   标准,/ full或/ dlls堆选项将强制操作   系统在您的时候生成访问冲突和损坏错误   程序覆盖堆内存。 “

但具体而言,我如何使用GFlags或Windbg在源代码中找到导致错误的行?

网上有没有好的/合成纸?

1 个答案:

答案 0 :(得分:3)

GFlags可能导致Windows中的堆管理器行为不同,以帮助调试堆问题。

当与/full选项一起使用时,如果访问超出其长度的已分配缓冲区,则程序将因访问冲突而“崩溃”。

(没有GFlags /full,程序可能会继续,问题会在稍后出现) 您可以使用VS或WinDbg及时调试或收集故障转储。

调试器现在应该指向错误(指令指针) 并希望您会在源代码中找到导致该错误的声明。

请注意/full选项会导致程序使用更多内存,因此只能用于相对较小的程序。 如果/full选项不会导致“崩溃”,请尝试使用/full /backwards