我有一個想法,在夜間自動構建中啓用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