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