2011-06-07 19 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