用于调试的Delphi编译器选项

用于调试的Delphi编译器选项,delphi,delphi-7,Delphi,Delphi 7,下图中的选项对最终二进制文件有什么影响 我首先编译应用程序时启用了它们,编译的二进制文件大小为7606272字节。然后我手动关闭了它们…大小没有改变。我还使用这些编译器开关(包含在使用.inc文件的每个文件中)来执行相同的操作: {$D-} // Remove "Debug information" {$L-} // Remove "Local symbols" {$Y-} // Remove "Reference info/Defi

下图中的选项对最终二进制文件有什么影响

我首先编译应用程序时启用了它们,编译的二进制文件大小为7606272字节。然后我手动关闭了它们…大小没有改变。我还使用这些编译器开关(包含在使用.inc文件的每个文件中)来执行相同的操作:

    {$D-}       // Remove "Debug information"
    {$L-}       // Remove "Local symbols"
    {$Y-}       // Remove "Reference info/Definitions only"
    {$C-}       // Remove "Assertions"
相同的文件大小。帮助中说调试信息进入了DCU(对象)文件,我已经确认这是正确的(选项关闭时它们会变小)。尽管编译和链接的时间如此之快,但很难说在时间上是否存在差异


切换这些选项是否对最终二进制文件有任何影响(例如性能增强)?在任何情况下,它似乎都不会影响二进制文件的大小。

前三个选项对二进制文件没有影响。它们只影响dcu文件中是否生成调试信息

断言选项确定是否包含
Assert
语句。这会影响可执行文件


调试dcu确定RTL/VCL dcu文件是否包含调试信息。此外,这些dcu文件的调试版本是未经优化构建的,以便更好地进行调试。这也会影响可执行文件中的代码

您确定此信息不在帮助中吗?@LURD:帮助中确实指出调试信息会进入DCU(对象)文件(我会将其添加到问题中,谢谢)。我已经确认DCU文件确实更小,并且编译了调试信息。编译和链接是如此之快,以至于我看不到任何时差。“帮助”没有说明这些选项对最终二进制文件有什么影响(如果有),因此出现了这个问题。在现代的delphi帮助中,它说这些选项不会影响最终的exe文件大小。@LURD:Aah,谢谢。这是否意味着关闭这些选项对发布代码没有任何好处?只是一个帮助链接,好的,谢谢。Delphi-7的内置帮助缺少关键点“不影响可执行程序的大小或速度”,请参阅LU RD的评论。我的发布版本包含调试信息,以便我可以获得良好的事后调试信息。这一点很好。包含调试信息还允许设置断点并单步执行任何{$IFDEF NDEBUG}代码,尽管我只有很少的特定于NDEBUG的代码,而且大多数调试都是在调试代码中进行的。如果NDEBUG应用程序崩溃(远离开发机器),那么调试信息有帮助吗?