FastMM / DXE2 сообщает только при использовании отладчика?

Я пытаюсь использовать FastMM версии 4.99 (согласно комментарию вверху FastMM4.pas). Я подписался на инструкции по использованию режима полной отладки с трассировкой стека, и я нахожу утечки, когда я запускаю свой .exe под отладчиком IDE. например

Диалог отчета об утечке FastMM

Но когда я пытаюсь запустить исполняемый файл из командной строки или дважды щелкнув в проводнике Windows, я не получаю сообщений об утечках. Утечки UnicodeString могут быть поддельными, но я точно знаю, что утечки TIniFile реальны. Как я могу сделать утечку отчетов / журналов FastMM, когда отладчик не используется?

ОБНОВЛЕНИЕ: в этом проекте также используется madExcept 3.0n: файл .dpr имеет FastMM4 в качестве первого элемента в предложении uses. Что еще нужно, чтобы эти двое сосуществовали?


person wades    schedule 11.07.2012    source источник


Ответы (1)


Вы неправильно настроили FastMM4Options.inc. Из файла, распространяемого с версией 4.97, это строка 405:

{Set this option to require the presence of the Delphi IDE to report memory
 leaks. This option has no effect if the option "EnableMemoryLeakReporting"
 is not also set.}
{.$define RequireIDEPresenceForLeakReporting}

Убедитесь, что . находится в последней строке (перед $define), и перестройте свой проект.

@wades обнаружил, что есть еще один параметр, сразу под тем, который я упомянул, RequireDebuggerPresenceForLeakReporting, который по умолчанию включен. Отключите его, добавив точку сразу после открывающей скобки:

{Set this option to require the program to be run inside the IDE debugger to
 report memory leaks. This option has no effect if the option
 "EnableMemoryLeakReporting" is not also set.}
{$define RequireDebuggerPresenceForLeakReporting}

(Добавляем к этому ответу по запросу @wades.)

person Ken White    schedule 12.07.2012
comment
Нет, не то. RequreIDEPresenceForLeakReporting уже отключен. - person wades; 12.07.2012
comment
Но это была подсказка ... интересующий параметр оказался RequireDebuggerPresenceForLeakReporting, который по умолчанию включен в v4.99. - person wades; 12.07.2012
comment
@wades, спасибо. Вы должны опубликовать ответ, указывающий на это, или, если хотите, я обновлю свой ответ, включив его, для других, которые могут найти это в будущем. (Не знаю, как я это пропустил, когда опубликовал ответ выше, поскольку это следующая запись в файле FastMM4Options.inc.) - person Ken White; 12.07.2012
comment
обновите ответ, чтобы добавить упоминание о флаге RequireDebugger ..., и я приму это. Спасибо. - person wades; 12.07.2012