FastMM 是否使您的可执行文件更大?我注意到我的应用程序增长了大约 300-500kb,这对我来说相当大。我已经关闭了 delphi 编译器选项以排除调试信息,但大小没有改变。
我使用 FastMM 的 FullDebugMode 打开,这会影响大小吗?但是当我尝试关闭它时,它会寻找我找不到的 libc。
请帮忙...我正在使用D5
首先,这并不重要。使用该选项编译的程序不适用于一般分发。它们旨在帮助您找到问题,以便您可以修复它,然后在不启用调试选项的情况下发布正确版本的程序。
其次,只有在您仍然在软盘上分发时,半兆字节才算大。这是否真的很大空间取决于您的程序事先有多大。在分发程序时压缩程序,您可能几乎不会注意到其中的差异。
最后,对于您问题的症结,是的,完全调试模式使您的程序更大。很明显,启用该模式会增加更多代码。它添加了执行所有调试检查的代码,例如检查堆损坏、生成堆栈跟踪、捕获释放接口的使用、将错误记录到文件以及记录内存泄漏。它还添加了加载和使用全调试模式 DLL 的代码,并将任何汇编程序函数更改为用纯 Delphi 编写。
关于调试信息的编译器选项应该没有效果。它控制调试信息是否包含在 DCU 文件中;该信息总是从 EXE 文件中排除(除非您正在谈论 TD32 调试信息,但无论如何您都不应该启用它,因为您没有使用 Turbo Debugger)。
如果您的程序正在寻找 Libc 单元,那么您所做的不仅仅是完全调试模式。你以某种方式打开了Linux 模式。你没有使用 Linux,所以不要打开那个模式。如果您遇到困难,请将您的FastMM4Options.inc副本替换为原始版本并重新开始。
FullDebugMode 使用 FastMM4 堆管理器的纯帕斯卡版本。
此版本标记块,以便跟踪和报告任何内存泄漏。
但在所有情况下,它都不会向您的可执行文件添加 300-500 KB。
由于编码的帕斯卡版本(不如 asm 优化)和执行的额外检查(例如块标记),它将比“正常”FastMM4 模式慢。
但是 300-500 KB 的可执行文件大小增加与 FullDebugMode 无关。这只是几十 KB 的问题(在最坏的情况下),因为大多数使用的代码都保留在外部 FastMM_FullDebugMode.dll 库中。
您应该手动更改了一些项目选项,例如 TD32 信息或远程调试信息。但据我所知,FastMM4 在完全调试模式下不需要这些信息。
FastMM 应该用 D5 编译,它不应该寻找 libc,它是 Linux 库。在D5下编译时最新版本有问题(像这样),尝试从源代码库中获取最新的源代码?