2010-01-13 69 views
3

我有一个想法,在夜间自动构建中启用FastMMs memleakreporting。该消息框当然应该被禁用。 最简单的可能是如果应用程序exitcode> 0,如果有memleak。我做了一个快速测试,出口代码为0,带有memleak和FastMM。使用FastMM检测内存泄漏并输出代码

所以我的问题是如何检测FastMM中是否有memleak来设置退出码?

回答

4

对于我之前的Delphi项目,我使用了MemCheck。它创建了所有检测到的泄漏文本日志文件。我喜欢这种报道方式,我看到FastMM有选择创建这样的文件:在FastMM4Options.incLogErrorsToFile。这样你需要检查日志文件而不是检查exitcode。

+0

这是当然的一种方法。我使用Finalbuilder,因此应该很容易检测到memleak文件。 – 2010-01-13 09:01:27

2

我修改了“procedure CheckBlocksOnShutdown(ACheckForLeakedBlocks:Boolean);”对于我现在的客户来说,要设置退出代码,所以我可以轻松地在DUnit中检查生成的进程是否存在mem泄漏。 我在程序结尾添加了一行:

... 
    {$ifdef UseOutputDebugString} 
    OutputDebugStringA(LLeakMessage); 
    {$endif} 
    ExitCode := 1;  <-- added this one 
    if Assigned(OnMessage) then 
    OnMessage(LLeakMessage); 
    ...