【问题标题】:Debug information {$D+} increases the size of my EXE with 6MB调试信息 {$D+} 将我的 EXE 的大小增加了 6MB
【发布时间】:2011-06-07 15:02:17
【问题描述】:

Delphi 文档说 “调试信息 [...] 它不会影响可执行程序的大小或速度。”

但是,当我激活调试信息(在项目选项 -> 链接器中)时,我的 EXE 从 1.8MB 变为 7MB。 我做错了什么?


注意:我认为“链接”下的“调试信息”与“编译”下的“调试信息”相同,因为它们具有相同的编译器指令 ({$D})。

【问题讨论】:

标签: delphi delphi-xe


【解决方案1】:

你的假设是错误的。使用调试信息编译意味着编译器生成带有调试信息的 DCU。与调试信息链接意味着链接器将来自 DCU 的调试信息放入最终的二进制文件中,而不是将其剥离出来,因此这当然会使二进制文件变得更大。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • Thaks ldsandon。这实际上是我的问题。这个程序大得离谱。
    • 文件可能会变得非常大,这取决于您是否使用调试 DCU 构建,或者如果您有许多非常大的 DCU,链接器可能会删除一些未使用的代码,但我不确定它是否可以删除未使用的代码调试信息。无论如何,这只是添加到生成文件中的信息(尽管许多调试 DCU 通常也是使用不同的代码生成选项构建的,请注意......),而不是添加到代码中。如果您使用一些异常跟踪库(JCL/JVCL、MadExcept、EurekaLog),它们可能需要将调试信息放入文件中以生成可读跟踪,否则您将只能获得数字地址。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多