Как получить трассировку стека от FastMM - PullRequest
17 голосов
/ 15 июля 2009

В следующем посте я заметил, что вы можете получить трассировку стека из FastMM, чтобы показать, что, по-видимому, было размещено объектом:

Как отследить хитрую утечку памяти с fastMM?

Я не могу найти информацию о том, как включить это в Delphi 2009, хотя.

Я установил для ReportMemoryLeaksOnShutdown значение true, поэтому я получаю базовый отчет, но как мне получить отчет трассировки стека?

Ответы [ 4 ]

40 голосов
/ 15 июля 2009

Внутренняя версия FastMM для Delphi не поддерживает трассировки стека.

Если вы хотите регистрировать трассировки стека утечки памяти, вам необходимо:

  • загрузить полную версию библиотеки FastMM

  • включите его как первый блок в ваш проект:

    program YourProject;
    
    uses
      FastMM4, // <--
      SysUtils,
      Forms,
      ...
    
  • включить опцию FullDebugMode в FastMM4Options.inc

  • set Файл карты - Подробно в опциях связывания проекта (FastMM_FullDebugMode.dll обрабатывает файл .map)

  • добавьте FastMM_FullDebugMode.dll в ваш двоичный (или Windows System32) каталог

6 голосов
/ 15 июля 2009

Вы также можете проверить программу установки опции Джереми Норта FastMM4. Это немного проще, чем редактировать файл inc FastMM4Options.inc напрямую. Вот ссылка:

Пост поста об интерфейсе FastMM4

5 голосов
/ 16 июля 2009

Кроме того, Франсуа Гайяр представил на CodeRage II сессию под названием «Борьба с утечками памяти для чайников», посвященную конкретно FastMM. Это перечислено под повторениями CodeRage II в четверг, 29 ноября 2007, 9.45 - 10:45 утра.

http://edn.embarcadero.com/article/37498

С уважением, Эрвин

3 голосов
/ 15 июля 2009

Вы также можете увидеть this и this для более подробного описания, чем ответ ulrichb.

И не забудьте включить опцию «Использовать отладочные DCU» ;)

...