2013-01-06 2 views
10

は、任意のセキュリティやパフォーマンスの問題が国民にReleaseビルド対Debugを配布していますか?デバッグ(懸念のユーザーに配布する)

私は(必要な依存関係と一緒に)Debugフォルダで.exeファイルをパックし、ユーザーにそれを与えるほとんどの時間。

他の1つを複数配布する理由はありますか?

+0

[パフォーマンスの違い - デバッグとリリースのビルド間?lq = 1](http://stackoverflow.com/questions/4043821/performance-differences-between-debug-and-release-builds ?lq = 1) – nawfal

答えて

8

私が考えることができるセキュリティの問題はありません。パフォーマンスの問題が最も確実です。アセンブリのDebugビルドには、ジッタオプティマイザがコードを最適化できないようにする属性(DebuggableAttribute)が含まれています。これは、実行中のプログラムのパフォーマンスに大きな違いをもたらす可能性があります。ジッタによって実行される最適化は、this answerに記載されています。

メモリ消費に問題がある可能性があります。ガベージコレクタは、メソッド本体の最後までローカル変数を有効に保ちながら、別々に動作します。これはコーナーケースであり、現実的なデータを使用していると仮定すると、このような問題はアプリのテスト中に診断されているはずです。 VB.NETへの具体的な

、デバッグビルドを出荷することは非常に簡単にそれが添付デバッガなしで、ユーザーのマシン上で実行されたときにあなたのプログラムがでOutOfMemoryExceptionでクラッシュすることがあります。これは、WeakReferencesのリークにより失敗し、Edit + ContinueがWithEventsキーワードを使用してイベントハンドラを持つクラスを追跡するために使用されます。

あなたはジッタオプティマイザによって生成さPERFの強化の必要性を持っていないとVB.NETのアセンブリを出荷していない場合は、心配することは多くはありません。

9

もちろん、セキュリティとパフォーマンスの両方に意味があります。

デバッグリリースビルドとデバッグビルドのために多くのコンパイラの最適化がオフになっているよりも多くの情報を含んで構築します。

また、ここでDebug/Release differenceを参照してください。


他よりも多くのものを好むする理由はありますが配布されますか?

はい。最適化でコンパイルされたより高速なバイナリを使用する場合は、releaseを使用してください。

+2

Hanselmanはこれをかなり間違っています(いつものように)、デフォルトのリリースビルドは実際にデバッグシンボルを生成します。とにかくこの質問にはあまり関係はありません。何にも影響せず、pdbsを出荷しないだけです。 –

+0

@HansPassant - ありがとう。私はシンボルがpdbsにしかないと思っていたし、それはポストではちょっと奇妙だった。 – Oded

関連する問題