我有一个产生内存堆异常(损坏)的应用程序。
我在网上找到了这样的一句话:
"GFlags.exe:一个堆调试程序。使用GFlags,您可以建立标准、/full或/dlls堆选项,这些选项将迫使操作系统在程序覆盖堆内存时生成访问冲突和损坏错误。“
但具体而言,如何使用GFlags或Windbg在源代码中找到导致错误的行?
网上有什么好的/合成的纸吗?
发布于 2012-01-03 12:37:53
GFlags可能导致Windows中的堆管理器行为不同,以帮助调试堆问题。
当与/full选项一起使用时,如果您访问已分配的缓冲区超过其长度,程序将因访问冲突而“崩溃”。
(如果没有GFlags /full,程序可能会继续,问题会在很久之后出现),您可以及时利用VS或WinDbg进行调试,或者收集崩溃转储。
调试器现在应该指向错误(指令指针),希望您能在源中找到导致错误的语句。
请注意,/full选项会导致程序使用更多内存,因此只能在相对较小的程序上使用。如果/full选项不会导致“崩溃”,那么也尝试使用/full /backwards。
https://stackoverflow.com/questions/8711224
复制相似问题