如何让 AppVerifier/WinDbg 在 Windows 10 上工作?

How do I get AppVerifier/WinDbg working on Windows 10?

我在 Windows 10 17134,并安装了 Windows 10 SDK 16299。我实际上有一个旧版本的 Windows 和 4 个不同版本的 SDK,但我决定升级到最新的 Windows 版本并卸载我所有的 Win10 SDK 并只安装我们正在使用的版本项目 16299。团队中的一些人能够 运行 AppVerifier,但大多数人不能。

我试图通过基本测试将测试简化为简单地将它连接到 Notepad.exe,这就是它的样子。请注意,保存按钮是灰色的,因为它确实已保存。如果你不点击保存,什么都不会生效。

然后当我尝试直接 运行 notepad.exe 时,我得到这个错误:

这与我在项目中遇到的错误完全相同。现在仔细查看帮助文档,我发现:

好吧,我在安装完整的 Windows 10 SDK 时安装了 WinDbg。并按照指南 运行 建议的命令行:

> C:\Program Files (x86)\Windows Kits\Debuggers\x86>windbg -xd av -xd
> ch -xd sov notepad.exe

它使用以下输出启动 WinDbg,这再次符合我们项目的行为:

我承认,我以前从未使用过 WinDbg,也不清楚我应该怎么做。我的初衷是诊断我项目中的堆损坏。所以希望有人能解释为什么它对某些人有效而不对其他人有效,或者我做错了什么。谢谢!

只需一个额外的步骤。在我上一张图片的底部,您可以键入命令 'k' 来生成调用堆栈。生成此信息:

> # ChildEBP RetAddr  00 0016f3d4 0f758c21 vrfcore!VerifierStopMessageEx+0x599 01 0016f420 0f75b235
> vfbasics!AVrfpSanityCheckAddressRange+0x57
**> *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\SysWOW64\hmpalert.dll** -  02 0016f42c 74485868
> vfbasics!AVrfpRtlEnterCriticalSection+0x15 WARNING: Stack unwind
> information not available. Following frames may be wrong. 03 0016f480
> 74481b37 hmpalert!CVCCP+0x76b8 04 0016f784 77d4f72e
> hmpalert!CVCCP+0x3987 05 0016f848 77d4ecf0
> ntdll!AVrfpSnapDllImports+0x166 06 0016f868 77d4f5a6
> ntdll!AVrfpDllLoadNotificationInternal+0xb4 07 0016f878 77d4e6a5
> ntdll!AVrfpSnapAlreadyLoadedDlls+0x41 08 0016f8a8 77d425dc
> ntdll!AVrfInitializeVerifier+0x19f 09 0016fb14 77d01e92
> ntdll!LdrpInitializeProcess+0x150d 0a 0016fb70 77d01d5c
> ntdll!_LdrpInitialize+0xe0 0b 0016fb80 00000000
> ntdll!LdrInitializeThunk+0x1c

hmpalert.dll 是 Sophos(Interceptx 或 Hitman Pro)的一部分。此文件导致应用程序验证程序失败。