Как активировать ReportMemoryLeaksOnShutdown только в режиме отладки?

Мне нужно активировать функциональность ReportMemoryLeaksOnShutdown, чтобы сообщать о утечке памяти моего приложения, но только в режиме отладки (когда работает среда Delphi IDE). Как я могу это сделать?

Ответ 1

попробуйте использовать переменную DebugHook

ReportMemoryLeaksOnShutdown:=DebugHook<>0;

Ответ 2

Если вы имеете в виду "режим отладки", скомпилированный с использованием конфигурации сборки Debug (D2007 +), у вас будет установлен символ DEBUG, поэтому вы можете активировать ReportMemoryLeaksOnShutdown, даже если вы выполняете отладчик с помощью:

{$IFDEF DEBUG}
  ReportMemoryLeaksOnShutdown := True;
{$ENDIF}

Если вы хотите запускать только в том случае, если отладчик присутствует, посмотрите ответ RRUZ

Ответ 3

Я обычно использую функцию API IsDebuggerPresent, а также окружаю ее с помощью проверки символа DEBUG, поэтому код не заканчивается в выпусках:

{$IFDEF DEBUG}   
  ReportMemoryLeaksOnShutDown := IsDebuggerPresent();
{$ENDIF}

Эта функция уже должна быть объявлена ​​в блоке Windows, если вы не используете древнюю версию Delphi и работаете в Windows 2000 и новее.