警告 / debugスイッチに関する
MSDN ドキュメント(Visual Studioではデバッグ情報です)は古くなっているようです!これは間違っているものです
あなたが/デバッグを使用する場合:フル:、JIT最適化されたコードとと/デバッグコードの品質上の小さな衝撃の速度とサイズに多少影響があることに注意してフル。リリースコードの生成には、/ debug:pdbonlyまたはno PDB をお勧めします。
/ debug:pdbonlyと/ debug:fullの違いの1つは、/ debug:fullを指定すると、コンパイラーがを発行DebuggableAttribute
することです。
では、今は何が正しいのでしょうか?
- Pdbのみ – .NET 2.0以前は、リリースされた製品(顧客のマシン)からのクラッシュダンプの調査に役立ちました。しかし、デバッガーをアタッチすることはできませんでした。これは、.NET 2.0の場合とは異なります。Fullとまったく同じです。
- 完全 –これは、クラッシュダンプの調査に役立ち、リリースビルドにデバッガーをアタッチすることもできます。ただし、MSDNの言及とは異なり、パフォーマンスに影響はありません(.NET 2.0以降)。Pdb-onlyとまったく同じです。
それらがまったく同じである場合、なぜこれらのオプションがあるのですか?John Robbins(windowsのデバッグ神)は、歴史的な理由でこれらが存在することを発見しました。
.NET 1.0には違いがありましたが、.NET 2.0では違いがありませんでした。.NET 4.0も同じパターンに従うようです。CLRデバッグチームとの再確認後、違いはまったくありません。
JITterがデバッグビルドを行うかどうかを制御するのは、/ optimizeスイッチです。<…>
結論としては、/ optimize +と/ debugスイッチのいずれかを使用してリリースビルドをビルドし、ソースコードでデバッグできるようにする必要があります。
それから彼はそれを証明し続けます。
これで、最適化は別のスイッチの一部になります/optimize
(Visual Studioではと呼ばれますOptimize code
)。
つまり、DebugInfo設定がpdb-onlyまたはfullに関係なく、同じ結果が得られます。Noneを回避することをお勧めします。リリースされた製品またはアタッチされているデバッガーからクラッシュダンプを分析できなくなるためです。