PERINGATAN Dokumentasi
MSDN untuk / debug switch (Di Visual Studio ini adalah Debug Info) tampaknya kedaluwarsa! Inilah yang dimilikinya yang salah
Jika Anda menggunakan / debug: full , perhatikan bahwa ada beberapa dampak pada kecepatan dan ukuran kode yang dioptimalkan JIT dan sedikit pengaruh pada kualitas kode dengan / debug: full . Kami merekomendasikan / debug: pdbonly atau tidak PDB untuk menghasilkan kode rilis.
Satu perbedaan antara / debug: pdbonly dan / debug: full adalah bahwa dengan / debug: full kompilator memancarkan a DebuggableAttribute
, yang digunakan untuk memberi tahu compiler JIT bahwa informasi debug tersedia.
Lalu, apa yang benar sekarang?
- Pdb-only - Sebelum .NET 2.0, ini membantu menyelidiki crash dumps dari produk yang dirilis (mesin pelanggan). Tapi itu tidak membiarkan melampirkan debugger. Ini tidak terjadi pada .NET 2.0. ini persis sama dengan Full .
- Penuh - Ini membantu kami menyelidiki dump error, dan juga memungkinkan kami memasang debugger untuk merilis build. Tapi tidak seperti yang disebutkan MSDN, itu tidak mempengaruhi kinerja (sejak .NET 2.0). Ini persis sama dengan Pdb saja .
Jika keduanya sama persis, mengapa kita memiliki opsi ini? John Robbins (dewa debugging windows) menemukan ini ada karena alasan historis.
Kembali ke .NET 1.0 ada perbedaan, tetapi di .NET 2.0 tidak ada. Sepertinya .NET 4.0 akan mengikuti pola yang sama. Setelah memeriksa ulang dengan Tim Debugging CLR, tidak ada perbedaan sama sekali.
Yang mengontrol apakah JITter melakukan build debug adalah sakelar / optimalkan. <…>
Intinya adalah Anda ingin membangun rilis rilis dengan / optimalkan + dan sakelar / debug mana pun sehingga Anda dapat men-debug dengan kode sumber.
lalu dia melanjutkan untuk membuktikannya.
Sekarang pengoptimalan adalah bagian dari sakelar terpisah /optimize
(di studio visual disebut Optimize code
).
Singkatnya, terlepas dari pengaturan DebugInfo pdb-only atau full, kami akan mendapatkan hasil yang sama. Rekomendasinya adalah untuk menghindari Tidak Ada karena ini akan membuat Anda tidak dapat menganalisis crash dump dari produk yang dirilis atau memasang debugger.