2

FastMM は実行可能ファイルを大きくしますか? アプリが約 300 ~ 500kb 大きくなることに気付きました。これは私にとってかなり大きいです。デバッグ情報を除外するために Delphi コンパイラ オプションをオフにしましたが、サイズは変わりません。

FastMM の FullDebugMode を on に使用していますが、これはサイズに影響しますか? しかし、オフにしようとすると、libc が検索されますが、見つかりませんでした。

助けてください...私はD5を使用しています

4

3 に答える 3

9

まず第一に、それは本当に問題ではありません。そのオプションでコンパイルされたプログラムは、一般配布用ではありません。これらは、問題を見つけて修正し、デバッグ オプションを有効にせずに正しいバージョンのプログラムを出荷できるようにすることを目的としています。

次に、フロッピー ディスクで配布している場合にのみ、0.5 メガバイトが大きくなります。それが本当に多くのスペースであるかどうかは、プログラムが事前にどれだけ大きかったかによって異なります。配布するときにプログラムを圧縮すると、ほとんど違いに気付かないでしょう。

最後に、あなたの質問の核心に、はい、フル デバッグ モードではプログラムが大きくなります。そのモードを有効にすると、より多くのコードが追加されることは明らかです。ヒープ破損のチェック、スタック トレースの生成、解放されたインターフェイスの使用の検出、ファイルへのエラーのログ記録、メモリ リークのログ記録など、すべてのデバッグ チェックを行うコードを追加します。また、フル デバッグ モードの DLL をロードして使用するためのコードを追加し、代わりにプレーンな Delphi で記述されるようにアセンブラ関数を変更します。

デバッグ情報に関するコンパイラ オプションは効果がありません。DCU ファイルにデバッグ情報を含めるかどうかを制御します。その情報は常に EXE ファイルから除外されます (TD32 デバッグ情報について話している場合を除きますが、Turbo Debugger を使用していないため、いずれにせよそれを有効にしないでください)。

プログラムが Libc ユニットを探している場合は、完全なデバッグ モードを切り替えるだけではありません。どういうわけかLinux モードをオンにしました。Linux を使用していないため、そのモードをオンにしないでください。行き詰まった場合は、FastMM4Options.incのコピーを元のバージョンに置き換えて、最初からやり直してください。

于 2010-10-28T04:02:39.557 に答える
1

FullDebugMode は、FastMM4 ヒープ マネージャーの純粋なパスカル バージョンを使用します。

このバージョンではブロックにマークが付けられるため、メモリ リークが追跡および報告されます。

ただし、すべての場合において、実行可能ファイルに 300 ~ 500 KB を追加することは決してありません。

Pascal バージョンのコーディング (asm よりも最適化されていない) と実行される余分なチェック (ブロックのマーキングなど) のため、「通常の」FastMM4 モードよりも遅くなります。

ただし、300 ~ 500 KB の実行可能サイズの増加は、FullDebugMode とは関係ありません。使用されるコードのほとんどは外部の FastMM_FullDebugMode.dll ライブラリにとどまるため、数十 KB (最悪の場合) にすぎません。

TD32 情報やリモート デバッグ情報など、いくつかのプロジェクト オプションを手動で変更する必要があります。しかし、私が理解している限り、これらの情報は完全なデバッグ モードの FastMM4 では必要ありません。

于 2010-10-28T05:56:48.967 に答える
0

FastMM は D5 でコンパイルする必要があり、Linux ライブラリである libc を探すべきではありません。D5 でコンパイルすると最新バージョンに問題が発生します (このように)。ソース リポジトリから最新のソース コードを試してみませんか?

于 2010-10-28T06:06:24.750 に答える