视觉泄漏检测器在 ntdll.dll 上抛出“访问冲突读取位置”
Posted
技术标签:
【中文标题】视觉泄漏检测器在 ntdll.dll 上抛出“访问冲突读取位置”【英文标题】:Visual Leak Detector throwing "Access violation reading location" on ntdll.dll 【发布时间】:2016-10-28 07:56:49 【问题描述】:当我包括:
#include <vld.h>;
在我的 stdafx.h 中并运行我的程序,它说安装了 Visual Leak Detector 2.5。我可以很好地运行我的程序,但是当它退出时,我得到了这个错误:
Exception thrown at 0x00007FFFB7F57FE7 (ntdll.dll) in CPPAssessment.exe: 0xC0000005: Access violation reading location 0x00007FFFB8095252.
If there is a handler for this exception, the program may be safely continued.
但我只有在启用 Visual Leak Detector 时才会得到这个,所以我猜这就是问题所在。
我确实找到了这个网站:Visual Leak Detector Forums 有人提到了一个修复,但它导致了一个带有 vld.cpp 文件的 github 存储库,我不知道如何处理它。
这个错误似乎是由 Windows 10 周年更新引起的,但我不确定。
【问题讨论】:
哈哈,jelmer :') Ik heb het zelfde 问题... 我有同样的问题,但我的程序甚至没有启动。 这个问题其实和C++或者C++11没有关系。由于“Visual Leak Detector”是第三方产品,您可能需要添加相关标签,以吸引使用/维护此类产品的人的注意。 请试试这个版本vld.codeplex.com/releases/view/630509 您能否提供您的 vld.ini 并激活视觉检漏仪以查找 VLD 内部的泄漏。 【参考方案1】:VLD 2.5.1 已发布,其中修复了 Windows 10 的错误。 https://vld.codeplex.com/releases/view/630509
我等了一会儿。感谢 VLD 团队
【讨论】:
【参考方案2】:如果你真的不需要使用 vld 来检测内存泄漏,Dr. Memory 是一个选项,它在 Windows 上对我很有效,和 Valgrind 一样。
【讨论】:
【参考方案3】:一些 Windows API 正在分配自己的内存来处理一些内部数据。你可能正试图弄乱这种记忆。
在 Visual Studio 中转到 DEBUG>Exceptions... 并添加“本机运行时检查”。当您弄乱内存时,您的代码将中断。查看您在调用堆栈中的位置并调查您上次的内存修改。
我已经使用 VLD 多年,有时它看起来很奇怪,但它总是准确的。如有疑问,请查看 MSDN 中的文档以确定应如何处理内存。
【讨论】:
【参考方案4】:我在 Visual Studio 2019 中调试时遇到了这个问题。我解决了它删除隐藏目录 .vs
和所有 Debug
和 Release
目录。(VS 必须关闭)
新构建后一切正常。
2.5.1 版(如@hariprasad 所述)已安装在我的计算机上。
Offtopic:我有几个关于.vs
目录的问题。如果我有一个奇怪的问题,首先尝试删除这个文件夹并重建。
【讨论】:
以上是关于视觉泄漏检测器在 ntdll.dll 上抛出“访问冲突读取位置”的主要内容,如果未能解决你的问题,请参考以下文章
ntdll.dll 中不需要的断点!_LdrpSnapThunk@36() + 0xf5 字节
(ntdll.dll)处引发的异常: 0xC0000005: 写入位置 0x00007FF6010E2278 时发生访问冲突 怎么办?