我有一个想法,可以在夜间自动构建中启用 FastMMs memleakreporting。消息框当然应该被禁用。如果存在内存泄漏,最简单的可能是应用程序退出代码 > 0。我做了一个快速测试,退出代码为 0,带有 memleak 和 FastMM。
所以我的问题是如何检测 FastMM 中是否存在 memleak 来设置退出代码?
我有一个想法,可以在夜间自动构建中启用 FastMMs memleakreporting。消息框当然应该被禁用。如果存在内存泄漏,最简单的可能是应用程序退出代码 > 0。我做了一个快速测试,退出代码为 0,带有 memleak 和 FastMM。
所以我的问题是如何检测 FastMM 中是否存在 memleak 来设置退出代码?
对于我之前的 Delphi 项目,我使用了 MemCheck。它创建了包含它检测到的所有泄漏的文本日志文件。我喜欢这种报告方式,而且我看到 FastMM 有创建此类文件的选项:在FastMM4Options.inc
里面有LogErrorsToFile
. 这样您需要检查日志文件而不是检查退出代码。
我修改了“程序 CheckBlocksOnShutdown(ACheckForLeakedBlocks: Boolean);” 让我当前的客户设置退出代码,因此如果生成的进程有内存泄漏,我可以轻松地检查 DUnit。我在程序末尾添加了一行:
...
{$ifdef UseOutputDebugString}
OutputDebugStringA(LLeakMessage);
{$endif}
ExitCode := 1; <-- added this one
if Assigned(OnMessage) then
OnMessage(LLeakMessage);
...