19

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

如何使用 fastMM 追踪棘手的内存泄漏?

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

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

4

4 回答 4

43

The internal Delphi version of FastMM doesn't support stack traces.

If you want to log the memory leak stack traces, you have to:

  • download the full version of the FastMM library

  • include it as the first unit in your project:

    program YourProject;
    
    uses
      FastMM4, // <--
      SysUtils,
      Forms,
      ...
    
  • enable the FullDebugMode option in FastMM4Options.inc

  • set Map file to Detailed in the linking project options (the FastMM_FullDebugMode.dll processes the .map file)

  • add the FastMM_FullDebugMode.dll in your binary (or Windows System32) directory

于 2009-07-15T10:03:29.460 回答
7

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

FastMM4 选项界面博客文章

于 2009-07-15T11:35:03.927 回答
5

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

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

问候, 欧文

于 2009-07-15T20:11:12.087 回答
3

You can also see this and this for more detailed description, than ulrichb's reply.

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

于 2009-07-15T10:39:45.863 回答