【问题标题】:How to profile and capture double deletion of and memory corruption in c++如何在 C++ 中分析和捕获双重删除和内存损坏
【发布时间】:2010-05-12 20:34:28
【问题描述】:

我有我用 VS 2008 在 windows 7 上用 c++ 编译的应用程序 我遇到了异常,我试图抓住这个我创建的 pdb 文件(因为我在发布时编译)。并查看堆栈的一部分,但它没有给我提示错误在哪里。 我正在寻找免费的方法来解决这个错误。你能推荐一些免费的方法吗?

【问题讨论】:

    标签: c++ exception profiling free


    【解决方案1】:

    Visual C++ 内置了相当不错的 C 运行时内存调试工具。

    请参阅#define _CRTDBG_MAP_ALLOC,或阅读:The CRT Debug HeapMemory Leak Detection Enabling

    它可以检测到:

    • 内存泄漏
    • 双重删除
    • 在分配的内存结束后写入

    如果您有一个可重现的情况,即问题分配总是同时发生,您可以使用 set it 来闯入该分配的调试器。

    还有 BoundsChecker、HeapAgent 和 Purify 等商业工具,以及 Fortify 等免费工具,当然您也可以自行开发,但使用内置的 VisualStudio 可以获得很长的路要走。

    【讨论】:

    • 柯蒂斯。您是否有 Fortify 下载的链接?提前致谢。
    • 我可以在发布模式下测试它吗? co'z它在哪里是我调试的问题它工作正常
    • @ossandcad:看起来它最后的安息之地是 Geocities。我在这里找到了一份副本:gnu-darwin.org/www001/src/ports/devel/adime/work/adime-2.2.1/… - IIRC 2.2 是最新版本。
    • @user63898:我不确定,我想你可以,但可能有很多麻烦。如果有任何帮助,我已经做了很多调试发布版本,并且您在调试中看不到的发布中看到的问题(一旦您考虑到assert() 等等)几乎总是未初始化的变量和竞争条件.也许这会给你一些开始的地方?
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 2011-09-13
    • 2010-09-05
    • 2020-12-30
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多