2012-03-16 15 views
0

私は大きな歴史的な(そして愚かな)理由のために、デバッグ版でしか展開できない大きなレガシープロジェクトに割り当てられました。予想通り、の一部にはのパフォーマンスの問題があります。VC6のデバッグチェックを最小限に抑えるためにデバッグDLLを最適化するにはどうすればよいですか?

プロジェクトはCのVisual Studio 6(はい、その古い)で書かれています。私は "すべてがデバッグバージョン"の影響を最小限に抑える方法を探しています。最終バイナリに注入されるデバッグコードの量を最小限にするコンパイラまたはリンカオプションはありますか?あるいは、後でそれを取り除くことのできる外部ユーティリティがありますか?

(これは基本的に愚かな質問で、私たちは解放に切り替えるはずだが、私を信じて、これは私のコントロールから完全に外れていて、事実上毎日私の魂の一部を殺している。 )

答えて

2

まず、デバッグバージョンとリリースバージョンの違いをすべてリストし、変更可能なものとできないものを特定してください。 次に、許可されているすべてのものを変更してください。私の頭の上から

、私の記憶が正しく私を提供する場合:

  • デバッグ:デバッグのDLLにリンクします。 リリース:リリースDLLとのリンク。
  • デバッグ:最適化なしでコンパイルします。 リリース:すべての最適化でコンパイルします。
  • デバッグ:アサーションでコンパイルしてください(-D_DEBUG)。 リリース:アサーションなしでコンパイルしてください(-DNDEBUG)。
  • デバッグ:デバッグシンボルを使用してコンパイル/リンクします。 リリース:デバッグシンボルなしでコンパイル/リンクします(実際のパフォーマンスには影響しません)。
  • 元の開発者がプロ​​ジェクト構成に対して行った任意の変更。

これらのすべてから、最初の2つだけが実際に差をつけることができます。いくつか(愚かな)理由でデバッグDLLに依存しているためです。そして2番目の理由は、最適化がプログラムの微妙なバグを引き起こす可能性があるからです。

+0

ありがとうございます。明らかに、私は本当に多くのことをすることはできません。他のデバッグモジュールにリンクするデバッグモジュールを持っていますが、それは変更できません(残念ながら)。だから私はすべての '関連する'オプションは実際に利用可能ではないと思う: - \ –

+0

最適化レベルはあなたがリンクしているものに依存すべきではありません。将来のすべてのデバッグビルドを最適化を有効にしてコンパイルすると、リンクまたは実行時の問題が発生するという技術的な理由はありません。 「エグゼクティブ」の理由は別の問題かもしれません。 – AShelly

+0

私が言ったように、そしてAShellyは良く言いました、私のリストのすべての箇条書きは他のものとは無関係で、自分で有効/無効にすることができます。デバッグDLLにリンクすることが重要な場合は、最適化されていないDLLにリンクしながら_your_コードを最適化することができます。 – rodrigo

関連する問題