2011-06-07 33 views
5

Delphi文档说 “调试信息不​​影响可执行程序的大小或速度”。但是,当我激活调试信息(在项目选项 - >链接器)时,我的EXE从1.8MB变为7MB。 我在做什么错?


注:我想这下“链接”的“调试信息”是一样的“编制”,因为它们具有相同的编译器指令下的“调试信息”({$ d})。

+0

与Delphi XE7相关的更新http://stackoverflow.com/questions/27931285/full-debugging-information-generates-huge-exe-files – Ampere 2015-01-13 21:25:41

回答

15

你的假设是不正确的。编译调试信息意味着编译器会生成带有调试信息的DCU。链接调试信息意味着链接器将来自DCU的调试信息放入最终的二进制文件中,而不是将其除去,所以当然这会使二进制文件变得更大。

没有调试信息的链接通常是正常的,因为调试器只要能够找到它们就可以获取DCU中的调试信息。但是如果您需要在DCU不可用的情况下调试您的应用程序,则需要打开链接选项。

+0

明白了。谢谢梅森! – Ampere 2011-06-07 15:54:33

4

添加调试信息不​​会影响代码大小(所产生的代码与开启或关闭该选项,其它选项控制代码生成相同的),但是将影响文件大小。

+0

Thaks ldsandon。那实际上是我的问题。该计划是荒谬的大。 – Ampere 2011-06-08 10:30:50

+0

该文件可能会变得非常大,具体取决于您是否使用了调试DCU构建,或者如果您有许多非常大的DCU,链接器可能会消除一些未使用的代码,但我不确定它可以去除未使用的调试信息。无论如何,只是将信息添加到生成的文件中(尽管许多调试DCU通常使用不同的代码生成选项构建,请注意......),而不是代码。如果您使用一些异常跟踪库(JCL/JVCL,MadExcept,EurekaLog),它们可能需要调试信息到文件中以产生可读的跟踪,否则您将只获得数字地址。 – 2011-06-08 12:33:23