问题标签 [application-verifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么 Application Verifier 找不到内存泄漏?
我正在使用 Windows 10 应用程序验证程序,x64 版本 10.0.10586。它勾选了所有“基本”复选框,包括“泄漏”。奇怪的是,应用程序验证程序正在为内存实现一个页面保护堆,因为 malloc 调用在页面末尾返回内存。
DLL 代码:
主要代码:
输出如下:
应用验证程序未能报告任何一个泄漏。
如果我启用 _CrtDbgFlag 调用,然后通过在应用程序关闭时打印它来验证实际上 malloc 是否泄漏:
为什么应用程序验证器不起作用?如果我在 main() 而不是 DLL 中分配内存,它也无法找到泄漏,但我认为这是它的一个已知限制。
memory-leaks - 一个堆分配被泄露,Application Verifier/WinDbg
我正在使用 Application Verifier 和 WinDbg 调试可执行文件。我在“基本”下打开了“泄漏”测试。我的问题是,当 Application Verifier 发现泄漏时,它似乎进入了某种抛出异常的无限循环。我收到这样的错误:
但是当我按下F5
继续调试时,我再次(一次又一次地)收到完全相同的消息,只是地址信息略有不同。
为什么会这样?有没有办法在不完全关闭泄漏检查的情况下忽略此泄漏?就目前而言,我无法完成我的程序以测试其他问题,因为应用程序验证程序在此泄漏上“挂起”。
c++ - 使用应用程序验证程序查找堆损坏原因
我的 C++ 应用程序有一些问题。当我使用 Clion 的调试器时 - 一切都很好。但是当我使用已编译的可执行文件(在 Windows 下)并尝试使用与在调试模式下相同的输入文件运行它时- 应用程序崩溃。因为我在调试中找不到迷恋的原因 - 在互联网上的一些搜索让我找到了微软的应用程序验证工具。
它可以诊断崩溃+显示堆栈跟踪,但我的问题是我无法将堆栈跟踪中的名称转换为 C++ 中的方法名称
这是错误部分(我的应用程序名称是 gridSolver):
可以请人帮忙吗?也许还有其他方法可以解决这个问题?
debugging - 应用程序验证程序停止:HKEY 泄露
在使用 Application Verifier 和 windbg 调试我的 VSTO 插件之一时,我发现在 Word 关闭时我得到以下停止:
找出此停止原因的最佳方法是什么?
按照我的建议dps 0422EA9C
并返回以下内容:
然后du 1D3F6FE8
回来
有趣的是,如果我在没有加载插件的情况下在 Word 上运行 Application Verifier / WinDbg,我仍然会停下来:
这是同一件事,但报告不同吗?
c++ - Windows AppVerifier 在退出时捕获的简单 C++ 程序
我的简单测试代码dummy.cpp
Windows AppVerifier(v4.0) 总是在代码退出时捕获。我不知道出了什么问题。我的 ApplicationVerifier 配置:
当 dummy.exe 退出时:
更新:@VTT 的评论很有帮助。我通过https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk将 Appliction Verifier 更新到 10.0 版
c++ - 从 C++ 应用程序中删除应用程序验证程序
我正在开发的应用程序遇到堆损坏,所以我尝试使用应用程序验证器来跟踪它,但现在我似乎无法删除应用程序验证器。
运行原始程序会自动加载验证程序,将其从应用程序验证程序中删除或卸载应用程序验证程序没有帮助。
注册表项是我的一个线索,但我不确定如何处理它们。
debugging - 附加到 Windows 服务时无法在 windbg.exe 中获得确切的异常
我正在尝试使用 Windows 调试工具 (WinDbg.exe) 调试服务,因为我的服务在生产中引发了未处理的异常。我按照Microsoft 的说明进行操作,我能够附加/调试该服务,它会写入一个包含异常信息的日志。
但是日志的编写没有任何具体细节,如下所示。我只是想知道如何从异常中获取确切的调用堆栈、异常消息和程序集引用。
服务器详细信息:Windows Server 2012 R2
winapi - 应用程序验证程序在调用 ShellExecuteEx 时报告访问冲突
简洁版本
应用程序验证程序说运行代码时存在访问冲突:
它出什么问题了?
长版
我在Application Verifier下运行我的应用程序,并启用了检测堆损坏的选项:
- Heaps:检查堆错误。
在调用ShellExecuteEx期间,出现异常,表明存在堆损坏。
在调试器中运行允许我解码异常:
在调试器之外运行,应用程序崩溃(WerFault 进行事后分析,进程终止)。
代码有什么问题?
例子
在崩溃之前,它会输出:
我想这可能是CreateProcess的常见错误,所以我确保它lpFile
是可写的:
内存转储
使用 32 位构建(以使指针更易于阅读),将内存传递给ShellExecuteEx
用一个指向宽字符的指针:
然后它调用:
然后有很多我无法理解的东西,直到错误最终发生在ParseUrlW:
带转储:
注意:此时EAX包含地址 0x0908BFE8:
提供的 pcszUrl 字符串为空?实际上没有,地址无效。但我们还不知道,直到代码尝试触摸它
注意:此时edi包含 0977FBDC
该代码尝试使用Move with Zero-Extend从 0x0908BFE8 复制第一个字。但该地址无效,导致访问冲突:
0x74b254ad 的访问冲突:读取地址 0x0908bfe8
因此,在ShellExecuteExW的代码中某处,它设置了对ParseUrlW的无效调用。
WinDBG
32位WinDbg,调试32位应用程序,带符号:
奖金阅读
windows - 应用程序崩溃但应用程序验证程序未显示错误
我在我的应用程序上使用了 Microsoft Application Verifier。
我的程序工作正常,直到我打开“低资源模拟”。此时,我的短暂启动然后从屏幕上消失(关闭?)。当我查看应用程序验证程序日志时,每个日志旁边都会显示“0 个警告,0 个错误”。
为什么 Application Verifier 不记录崩溃?
Win 10 64 位
我的应用是 32 位
应用程序验证器 64 位