Delphi 如何仅在调试模式下激活ReportMemoryLeaksOnShutdown?

Delphi 如何仅在调试模式下激活ReportMemoryLeaksOnShutdown?,delphi,Delphi,我需要激活ReportMemoryLeaksOnShutdown功能来报告我的应用程序的内存泄漏,但仅限于在调试模式下(当Delphi IDE运行时)。如何执行此操作?尝试使用变量 ReportMemoryLeaksOnShutdown:=DebugHook0; 如果您指的是使用调试生成配置(D2007+)编译的“调试模式”,您将定义调试符号,因此即使在运行以下调试器时,您也可以激活ReportMemoryLeaksOnShutdown: {$IFDEF DEBUG} ReportMemor

我需要激活
ReportMemoryLeaksOnShutdown
功能来报告我的应用程序的内存泄漏,但仅限于在调试模式下(当Delphi IDE运行时)。如何执行此操作?

尝试使用变量

ReportMemoryLeaksOnShutdown:=DebugHook0;
如果您指的是使用调试生成配置(D2007+)编译的“调试模式”,您将定义调试符号,因此即使在运行以下调试器时,您也可以激活ReportMemoryLeaksOnShutdown:

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

如果只想在调试器存在的情况下运行,请查看

我通常使用IsDebuggerPresentAPI函数,并用调试符号检查将其包围,以便代码不会最终出现在发布版本中:

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

如果您没有使用旧版本的Delphi,并且在Windows 2000及更高版本上运行,则该函数应该已经在Windows单元中声明。

并可能禁用与
DebugHook
{$WARN SYMBOL\u PLATFORM OFF}
相关联的愚蠢警告(对于Delphi版本,我有,)因为他们只在Windows平台上工作,所以对我来说,这只是噪音。我不同意警告是愚蠢的。我确实意识到Kylix没有得到跟进,Delphi.NET被Delphi Prism取代。但是由于未来的Delphi版本将带来一些东西(阅读路线图、去年DelphiLive期间的演示以及今年的活动,其中一些活动有x64和/或Mac编译器预览),我认为这个警告可能很烦人,但并不愚蠢。@jason请关闭警告,停止抱怨!仅仅因为你不需要它并不意味着其他人想要它。更重要的是,Emba的好人给了你警告的控制权。在我看来干得不错。项目选项是特定于项目的(因此得名)。IDE中仍然有对每个项目有效的全局选项-它们只是不同的可用选项。虽然也有类似于默认项目选项的内容,但是在Windows单元中没有声明IsDebuggerPresent,因此:
函数IsDebuggerPresent:LongBool;stdcall
函数为debuggerpresent;外部内核32名称“IsDebuggerPresent”
{$IFDEF DEBUG}   
  ReportMemoryLeaksOnShutDown := IsDebuggerPresent();
{$ENDIF}