视觉泄漏检测器在 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 和所有 DebugRelease 目录。(VS 必须关闭) 新构建后一切正常。

2.5.1 版(如@hariprasad 所述)已安装在我的计算机上。

Offtopic:我有几个关于.vs 目录的问题。如果我有一个奇怪的问题,首先尝试删除这个文件夹并重建。

【讨论】:

以上是关于视觉泄漏检测器在 ntdll.dll 上抛出“访问冲突读取位置”的主要内容,如果未能解决你的问题,请参考以下文章

ntdll.dll 中不需要的断点!_LdrpSnapThunk@36() + 0xf5 字节

OleDbCommand 在有效的命令文本上抛出异常

视觉泄漏检测器已关闭

视觉泄漏检测器:文件和行号不可用

Win32环境下从ntdll.dll调用Nt函数,C++

(ntdll.dll)处引发的异常: 0xC0000005: 写入位置 0x00007FF6010E2278 时发生访问冲突 怎么办?