如何从FastMM获取堆栈跟踪

19

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

如何使用FastMM跟踪棘手的内存泄漏?

但是我找不到关于如何在Delphi 2009中启用此功能的信息。

我已将ReportMemoryLeaksOnShutdown设置为true以获取基本报告,但我该如何获得堆栈跟踪报告?

4个回答

44

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

如果您想记录内存泄漏的堆栈跟踪信息,您需要:

  • 下载完整版本的FastMM库

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

program YourProject;

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

  • 在链接项目选项中将映射文件设置为DetailedFastMM_FullDebugMode.dll处理.map文件)

  • FastMM_FullDebugMode.dll添加到您的可执行文件目录(或Windows System32目录)中


  • 1
    FastMM_FullDebugMode.dll 也可以存储在 Windows 系统目录中。 - gabr
    3
    在我的64位Windows上,我不得不将它复制到:C:\Windows\SysWOW64 - TmTron
    我已经完成了以上所有步骤,但对我来说仍然无效。我使用的是Delphi XE4,因此符号引用信息为“引用信息”。在调试中启用了所有内容。 - Tom

    7

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

    FastMM4选项界面博客文章


    5
    此外,Francois Gaillard在CodeRage II上做了一个名为“Fighting Memory Leaks for Dummies”的演讲,专门处理FastMM。该演讲列在CodeRage II重播节目中,时间为2007年11月29日星期四上午9:45至10:45。详情请参见http://edn.embarcadero.com/article/37498
    祝好, Erwin

    3
    您还可以查看这篇文章这篇文章,获取比ulrichb的回复更详细的描述。
    而且,请不要忘记启用“使用调试DCU”选项;)

    “使用 Debug DCUs” 是可选的,与 FastMM 调试您自己源代码的能力没有直接关系。 - Gabriel

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接