Какой лучший инструмент для обнаружения утечек памяти в Delphi [закрыто]

StackOverflow https://stackoverflow.com/questions/416046

  •  03-07-2019
  •  | 
  •  

Вопрос

Какой лучший инструмент для обнаружения утечек памяти.

И бесплатно, и не бесплатно.

Спасибо

Это было полезно?

Решение

В своей работе мы используем EurekaLog в Delphi 7.Это компонент обработчика исключений, который предоставляет очень подробную информацию об исключениях (включая стек вызовов!переменные среды и т. д.), даже в случае нарушений прав доступа.Но еще одна замечательная особенность заключается в том, что вы также можете указать ему ошибку при утечке памяти, что показывает точную строку кода, в которой память/объект была выделена в первую очередь!Это коммерческий продукт, но я все равно очень рекомендую его.

Другие советы

FastMM — это бесплатный (доступен исходный код) детектор утечек памяти, уже интегрированный в последние версии Delphi.У меня никогда не было потребности ни в чем другом.

Кстати, гораздо лучше ограничить возможности утечек памяти при кодировании, а не искать их позже.Несколько советов:

Всегда используйте в своем коде try и, наконец, для освобождения созданных объектов.Лучше сразу написать этот код, а потом писать код для использования объектов.Еще лучше использовать такие функции IDE, как шаблоны кода.

Используйте функции, которые возвращают динамически выделенные объекты, только в случае крайней необходимости.Обычно лучше передавать объекты в качестве параметров, чем создавать и возвращать их.Например это

procedure getChoices(var AChoices: TStrings);

было бы намного лучше, чем

function getChoices: TStrings;

поскольку нет возможности случайной утечки созданного объекта TStrings.

Я бы рекомендовал полную версию FastMM4 вместо версии, включенной в Delphi.Полная версия предоставляет вам полный и подробный отчет, записываемый в файл, а не в диалоговое окно.Объединив это с самодельным «memoryleak-logfile-differ», вы готовы к увлекательной охоте за ошибками.

AQTime очень хорошо.Он также выполняет другие функции, например, профилирование производительности.И это не требует каких-либо изменений в вашем коде.Конечно, компиляция с отладочной информацией помогает получить лучшие результаты.

Я всегда использую ReportMemoryLeaksOnShutdown := (DebugHook <> 0);так что я получаю сообщения об утечках только во время отладки.

PS хотел разместить это в комментарии, но у меня пока нет прав..

Возможно, вы захотите взглянуть на этот сеанс CodeRage 2: Борьба с утечками памяти для чайников.В основном показано, как использовать FastMM для предотвращения/обнаружения утечек памяти в Delphi.Было для D2007, но актуально и для D2009.

ФастММ очень хорош.Я знаю 3 или 4 бесплатных менеджера памяти для Delphi.Проверка их всех занимает меньше часа, поскольку обычно для встраивания их в проект требуется всего 3 строчки кода.

я использую MadExcept потому что это бесплатно для личного использования.

Пытаться УМЛД 1.0 Мы попробовали и проверили!!Интеллектуальное решение для разработки приложений Delphi без утечек и инструмента сообщения об ошибках для разработки Delphi.

http://www.torry.net/authorsmore.php?id=7616&sort=ID

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top