【问题标题】:How to get a stack trace from FastMM如何从 FastMM 获取堆栈跟踪
【发布时间】:2010-11-10 22:55:23
【问题描述】:

我在以下帖子中注意到,您可以从 FastMM 中获取堆栈跟踪,以显示对象被分配的位置:

How to track down tricky memory leak with fastMM?

不过,我找不到任何有关如何在 Delphi 2009 中启用此功能的信息。

我已将ReportMemoryLeaksOnShutdown 设置为true,因此我得到了基本报告,但是如何获得堆栈跟踪报告?

【问题讨论】:

    标签: delphi delphi-2009 fastmm


    【解决方案1】:

    FastMM 的内部 Delphi 版本不支持堆栈跟踪。

    如果要记录内存泄漏堆栈跟踪,则必须:

    • 下载FastMM library的完整版

    • 将其作为第一个单元包含在您的项目中:

      program YourProject;
      
      uses
        FastMM4, // <--
        SysUtils,
        Forms,
        ...
      
    • FastMM4Options.inc 中启用FullDebugMode 选项

    • 在链接项目选项中将地图文件设置为详细FastMM_FullDebugMode.dll处理.map文件)

    • 在您的二进制(或 Windows System32)目录中添加 FastMM_FullDebugMode.dll

    【讨论】:

    • FastMM_FullDebugMode.dll也可以存放在Windows系统目录中。
    • 在我的 64 位 Windows 上,我必须将其复制到:C:\Windows\SysWOW64
    • 我已经完成了上述所有操作,但仍然无法为我工作。我使用 Delphi XE4,所以符号参考信息是“参考信息”。一切都在调试中启用。
    【解决方案2】:

    您也可以查看thisthis 以获得更详细的描述,而不是ulrichb 的回复。

    还有don't forget to enable "Use Debug DCUs" option ;)

    【讨论】:

    • “使用调试 DCU”是可选的,与 FastMM 对您的 OWN 源代码的调试功能没有直接关系。
    【解决方案3】:

    此外,Francois Gaillard 在 CodeRage II 上展示了一个名为“为傻瓜而战”的会议,专门讨论 FastMM。它在 2007 年 11 月 29 日星期四上午 9:45 - 10:45 的 CodeRage II 重播中列出。

    http://edn.embarcadero.com/article/37498

    问候, 欧文

    【讨论】:

      【解决方案4】:

      您可能还想查看 Jeremy North 的 FastMM4 选项设置程序。这比直接编辑 inc FastMM4Options.inc 文件要容易一些。这是链接:

      FastMM4 Options Interface Blog Post

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多