10

DebugvsReleaseビルドを一般に配布する際のセキュリティまたはパフォーマンスの問題はありますか?

ほとんどの場合、.exeファイルを(必要な依存関係とともに)Debugフォルダーにパックして、ユーザーに提供します。

配布するために一方を他方よりも優先する理由はありますか?

4

2 に答える 2

10

はい、もちろんあります-セキュリティとパフォーマンスの両方の影響があります。

デバッグビルドにはリリースビルドよりも多くの情報が含まれており、デバッグビルドでは多くのコンパイラ最適化がオフになっています。

こちらのデバッグ/リリースの違いも参照してください。


配布するために一方を他方よりも優先する理由はありますか?

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

于 2013-01-06T16:12:19.683 に答える
8

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

メモリ消費に問題がある可能性があります。ガベージコレクターは異なる動作をし、メソッド本体の終わりまでローカル変数を存続させます。これはコーナーケースであり、現実的なデータを使用していると仮定すると、アプリのテスト中にこのような問題を診断する必要があります。

VB.NETに固有のデバッグビルドを出荷すると、デバッガーが接続されていないユーザーのマシンで実行された場合、プログラムがOutOfMemoryExceptionでクラッシュする可能性が非常に高くなります。WithEventsキーワードを持つイベントハンドラーを持つクラスを追跡するためにEdit+Continueによって使用されるWeakReferencesのリークが原因で失敗します。

ジッタオプティマイザによって生成されるパフォーマンスの強化が必要なく、VB.NETアセンブリを出荷しない場合は、心配する必要はほとんどありません。

于 2013-01-06T16:18:33.337 に答える