如何使用 Application Verifier 在我的 DLL 中查找堆损坏?
How to find heap corruption in my DLL with Application Verifier?
我用 Visual Studio 2017 开发了一个 C++ DLL,但我有一些内存问题。我想使用 Application Verifier 来调试它,但运行我的 DLL 的应用程序(第三方应用程序)也已损坏。因此,如果我激活应用程序验证程序,应用程序会在加载我的 DLL 之前崩溃。
是否可以让应用程序验证器只处理 DLL 或模块的堆损坏?如果没有,是否可以使用其他工具调试我的 DLL?
据我所知,应用程序验证程序使用全局 windows 标志来检测泄漏和堆损坏,就像这样。所以你可以直接使用gflags工具开启这个功能。
请查看 Microsoft How to use gflags for finding heap corruptions 的以下讨论。
为什么不编写一个简单的包装器应用程序?我不得不为第三方 DLL 执行此操作,该 DLL 导致堆损坏,后来会导致我们的应用程序崩溃。在这种情况下,它在析构函数中,所以我只需要加载和释放它。但是,如果没有为您找到它,您可以为每个导出添加单元测试。
我用 Visual Studio 2017 开发了一个 C++ DLL,但我有一些内存问题。我想使用 Application Verifier 来调试它,但运行我的 DLL 的应用程序(第三方应用程序)也已损坏。因此,如果我激活应用程序验证程序,应用程序会在加载我的 DLL 之前崩溃。
是否可以让应用程序验证器只处理 DLL 或模块的堆损坏?如果没有,是否可以使用其他工具调试我的 DLL?
据我所知,应用程序验证程序使用全局 windows 标志来检测泄漏和堆损坏,就像这样。所以你可以直接使用gflags工具开启这个功能。
请查看 Microsoft How to use gflags for finding heap corruptions 的以下讨论。
为什么不编写一个简单的包装器应用程序?我不得不为第三方 DLL 执行此操作,该 DLL 导致堆损坏,后来会导致我们的应用程序崩溃。在这种情况下,它在析构函数中,所以我只需要加载和释放它。但是,如果没有为您找到它,您可以为每个导出添加单元测试。