Обнаружение утечек памяти с помощью FastMM и кода выхода
У меня есть идея, чтобы включить запись сообщений FastMM в ночной автоматической сборке. Окно сообщений, конечно, должно быть отключено. Самый простой вариант - код выхода приложения> 0, если есть утечка памяти. Я сделал быстрый тест и код выхода был 0 с memleak и FastMM.
Итак, мой вопрос: как я могу определить, есть ли в FastMM утечка памяти для установки кода выхода?
2 ответа
Для моего предыдущего проекта 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);
...