如何使用Microsoft Application Verifier

chi*_*uba 26 c++ application-verifier heap-corruption

使用C++,今天在演示期间发现我正在遭受损坏的堆(但仅在重要场合!!).我在SO上发现了一些帖子,并决定下载Application VerifierDebugging工具.我目前正在运行Visual Studio 2010.

所以,现在我已经安装了调试工具,我得到一个名为Windows Kits的文件夹.在文件夹中我有一个名为WinDbg的应用程序,我试图打开我的应用程序并运行它.它被罚款但我无法获得有关我的堆损坏的任何信息.然后我安装了验证器,它只给我留下了一个头文件和一个.dll文件,我不知道该怎么办.

所以,任何人都可以告诉我如何使用这个工具,这样我就不会再遭受这样的尴尬时刻了吗?一直在论坛上搜索,因为我甚至不知道如何打开验证器,当我阅读说明如何使用它时,我真的迷失了(从2009年开始)

MSa*_*ers 28

App Verifier将安装AppVerif.EXE可执行文件.运行它,并告诉它验证您的应用程序.然后在调试器(WinDBG或IDE)中运行应用程序.

  • 最后一步是:重新运行App Verifier并选择菜单项View-> Logs; 将列出应用程序报告以及检测到的日期,错误数量和警告.要查看结果,有View按钮,但在我的系统上什么都不做.我保存为xml文件并使用通用文本查看器读取输出. (9认同)
  • 哪里?在程序和文件下的app verifier文件夹中,我看不到任何可执行文件 (7认同)
  • 它位于system32,当我不知道它的名字时,它不知道如何寻找它 (4认同)
  • Appverifier说要获得最佳结果,应用程序应该在调试模式下运行. (2认同)
  • @Sahara:MSalters 得到了我的投票,因为就我而言,AppVerifier 无需我付出一点努力就发现了问题。我运行 c:\windows\system32\AppVerif.exe,通过“文件 > 添加应用程序”将我的应用程序添加到左侧窗口,在右侧窗口中选择“基本”,按“保存”和“退出”,然后在 Visual Studio 中以调试模式运行我的应用程序。它立即指出了我的代码在 6 元素数组末尾添加第 7 个元素的位置。这就是我需要做的所有事情,让 AppVerifier 能够“做它的事情”。 (2认同)

Pre*_*cco 6

考虑将应用程序验证程序Visual Studio调试器结合使用。

  1. 启动Visual Studio并编译您的应用程序
  2. 启动应用程序验证器实用程序。
  3. File => Add Application
  4. 选择适当的Tests(例如堆,异常,...)
  5. 使用 Visual StudioDebug启动您的应用程序。

当发生不好的事情时……您的调试器将停止。这应该可以让您很好地了解问题的根源。

此外,在开始测试之前加载丢失的符号可能会有所帮助。在 Visual Studio 2017 中,您可以通过以下方式执行此操作:

  1. Debug
  2. Options and Settings
  3. Debugging
  4. Symbols
  5. Load all symbols

祝你好运!

注意:完成后,请务必禁用您启用的AppVerfier检查...否则当您忘记AppVerifier时,您可能会在 6 个月后遇到一些意想不到的副作用。

参考

  • 此版本的应用程序验证器已过时,并按原样提供,适用于早于 WINDOWS 7 的操作系统。新版本在 Windows SDK 中分发 - https://developer.microsoft.com/windows/downloads/windows-10-sdk。对于以前版本的 Windows,存档的 SDK 版本可从 https://developer.microsoft.com/windows/downloads/sdk-archive 获取。 (2认同)