FastMM / DXE2仅在使用调试器时报告?

时间:2012-07-11 20:29:05

标签: delphi delphi-xe2 fastmm

我正在尝试使用FastMM版本4.99(根据FastMM4.pas顶部的评论)。我有followed the instructions使用完全调试模式和堆栈跟踪,并且当我在IDE调试器下运行.exe时发现泄漏。 e.g。

FastMM Leak Report Dialog

但是当我尝试从命令提示符运行可执行文件,或者双击Windows资源管理器时,我没有报告泄漏。 UnicodeString泄漏可能是假的,但我确信TIniFile泄漏是真实的。如何在不使用调试器时使FastMM报告/日志泄漏?

更新:此项目还使用madExcept 3.0n:.dpr文件确实将FastMM4作为其uses子句中的第一项。还有什么需要让这两者共存吗?

1 个答案:

答案 0 :(得分:12)

您尚未正确配置FastMM4Options.inc。从分发版本4.97的文件开始,它位于第405行:

{Set this option to require the presence of the Delphi IDE to report memory
 leaks. This option has no effect if the option "EnableMemoryLeakReporting"
 is not also set.}
{.$define RequireIDEPresenceForLeakReporting}

确保.位于最后一行($define之前)并重建项目。

@wades发现还有另一个设置,紧接在我提到的设置RequireDebuggerPresenceForLeakReporting之下,默认为打开。通过在左括号后添加句点来禁用它:

{Set this option to require the program to be run inside the IDE debugger to
 report memory leaks. This option has no effect if the option
 "EnableMemoryLeakReporting" is not also set.}
{$define RequireDebuggerPresenceForLeakReporting}

(通过@wades的请求添加到这个答案。)