我最近安装了Delphi XE7。当我第一次编译一个旧应用程序时,当我看到 EXE 的大小增加了 10MB 时,我惊得下巴都掉了!
在“项目选项”中,我发现将“调试信息”设置为“有限调试信息”会将 EXE 大小减小到非常接近 Delphi XE 生成的 EXE 大小。
也许在 Delphi XE7 下“有限调试信息”相当于 Delphi XE 中的“调试信息”,因为它产生相同的 EXE 大小?
那么,为什么完整的“调试信息”使 EXE 如此之大(与 XE 相比)?我无法用有限的信息编译 EXE(我猜),因为我想完全访问调试工具(EurekaLog 也需要它)。
Embarcadero 的文档没有提及“有限”和完整调试信息之间的区别。
EurekaLog 文档适用于旧版本的 Delphi,因此它没有明确说明我是否可以使用新选项(仁慈的)“有限调试信息”或完整调试信息。我必须进行实验。
“有限调试信息”是一个仅影响 Android 目标编译器的选项。但是,由于所有编译器共享相同的接口,因此每个目标都会出现此选项。它仅适用于每个单独的对象 (.o) 文件中包含多少调试信息。对于 Android(和 iOS),调试信息格式为 DWARF。 DWARF 是一种非常详细的格式,可以包含有关给定单元中所有类型的非常详细的结构类型信息and对于给定单元“使用”的所有单元的所有类型。在“有限调试信息”下,所有使用的单元的类型信息是not生成的。这可能意味着某些字段和局部变量在调试时可能无法检查。
至于调试信息是否包含在最终的可执行文件中,这是由链接器选项控制的,而不是由编译器选项控制的。链接器将链接任何可用的调试信息。如果为 Android 构建并选择“调试信息”,则最终图像将包含更多信息并且更大。
现在我假设你的目标是Windows(你实际上并没有声明你是这样,但我会在这里使用我的心灵力量),在这种情况下,“有限调试信息”和“调试信息”是相同的事物。在 Windows 下,调试格式称为“GIANT”。你能说“讽刺”吗? DWARF 是一种极其冗长的格式,而 Embarcadero(Borland 最初的)自己的 GIANT 格式则更为紧凑。大小的增加只能来自于添加的运行时功能,并且可能来自更多地使用泛型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)