Обнаружение утечек памяти с помощью 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);
  ...
Другие вопросы по тегам