如何调试mingw构建的二进制文件以检测堆错误?我看到关于这个主题有几个问题,但它们很通用,很难找到适合MinGW的工具。我花了很多时间来寻找解决方案,我希望合并后的主题会有所帮助。
例如,当某人在Visual Studio调试器下运行它时报告库中的错误时会出现这样的工具,该调试器因“堆错误”而停止。
答案 0 :(得分:6)
Microsoft提供了一个名为Application Verifier的工具。它是一个gui工具,可以更改系统设置以在受控环境中运行选定的应用程序。如果程序导致可检测到的内存错误,则可以崩溃程序。这是一个可以调试的受控崩溃。
幸运的是,它可以从Microsoft获得a separate download。获得它的另一种方法是安装Windows SDK并选中 Application Verifier 复选框。 SDK还提供了一个选项 Application Verifier可再发行的。
配置Application Verifier以了解您的应用后,您需要对其进行调试。 MinGW下的调试是一个更常见的主题,已经在stackoverflow上进行了解释。 stackoverflow上的[mingw] [debugging]查询提供了有趣的文章。其中一个是How do I use the MinGW gdb debugger to debug a C++ program in Windows?。 Gdb是我使用的那个。
一般问题How to debug heap corruption errors?和Heap corruption detection tool for C++有助于找到此工具,但我不确定它是否与MinGW兼容。它是。