2009-06-29 11 views
0

私は、debug = trueが実稼働サーバー上で悪いことを理解しています。debug = falseのWebアプリケーション内で、デバッグモードのDLLはどうなりますか?

私は現在、サードパーティ製のDLLをいくつか使用しており、デバッグモードでコンパイルされていて、知りたいと思っています。デバッグモードでDLLにはdebug = falseのWebアプリケーションがどうなりますか?

答えて

1

system.web/compilation構成要素のデバッグ属性は、コンパイルされたDLLのコードには影響しません。

これは動的にコンパイルされたコードにのみ影響し、ランタイムにはいくつかの影響があります(たとえば、debug = trueの場合、system.web/httpRuntime設定要素のexecutionTimeout要素は無視されます)。

2

C#/ .NET(C++ DLLとは異なります)では一般的に問題ありません。デバッグとリリースはほぼ同じであり、(C++ DLLの場合と同様に)メモリ管理の問題はありません。次

jaybazのblogからです:

は、人々は通常、デバッグ&リリースとの差として識別する3つの事があります。興味のあるものを決定する必要があります:

"DEBUG"プリプロセッサフ​​ラグ。 'csc/define'でアセンブリー/ネットモジュール全体、または#defineでファイル全体に設定できます。

デバッグ情報(pdb)。 'csc/debug [+ | - ]'で設定します。それはcodegenには影響しませんので、あまり面白くありません。

最適化。 'csc/optimize [+ | - ]'で設定します。マネージコードでは、ランタイムのJITterはほぼすべての最適化を行います。このフラグから生成されたILの差はかなり小さいです。 Whidbey C#コンパイラは、このフラグに以前のバージョンよりも大きな違いがありますが、それほど多くはありません。

0

AFAIKをデバッグモードのコンパイラでコンパイルしても、バイナリデータが最適化されず、デバッガが簡単になります。ケースでパフォーマンスが低下する可能性があります。また、コンパイラは、デバッガ用のビルドに余分なデータを追加します。

私はあなたがASP.Netウェブサイトと、デバッグモードとリリースモードでコンパイルされたDLLについて話していると仮定します。

+0

.NETではほとんどの最適化がJITに任されていますが、デバッグが容易になるように作られていない最適化(通常はサイズ用)がいくつかあります。 – AnthonyWJones

関連する問題