UYARI / hata ayıklama anahtarı için
MSDN dokümantasyonu (Visual Studio'da Hata Ayıklama Bilgisidir) güncel değil gibi görünüyor! Yanlış olan şey bu
/ Debug: full kullanırsanız , JIT ile optimize edilmiş kodun hızı ve boyutu üzerinde bir miktar etkisi olduğunu ve / debug: full ile kod kalitesi üzerinde küçük bir etkisi olduğunu unutmayın . Sürüm kodu oluşturmak için / debug: pdbonly öneririz veya PDB yok.
/ Debug: pdbonly ve / debug: full arasındaki bir fark, / debug: full ile derleyicinin DebuggableAttribute
, JIT derleyicisine hata ayıklama bilgilerinin mevcut olduğunu söylemek için kullanılan a yaymasıdır .
O zaman şimdi doğru olan nedir?
- Yalnızca Pdb - .NET 2.0'dan önce, piyasaya sürülen üründen (müşteri makineleri) çökme dökümlerinin araştırılmasına yardımcı oluyordu. Ancak hata ayıklayıcının eklenmesine izin vermedi. Bu, .NET 2.0'daki durum değildir. Öyle tam olarak aynı Dolu .
- Tam - Bu, kilitlenme dökümlerini araştırmamıza yardımcı olur ve ayrıca derlemeyi yayınlamak için hata ayıklayıcı eklememize olanak tanır. Ancak MSDN'nin bahsettiğinin aksine, performansı etkilemez (.NET 2.0'dan beri). Yalnızca Pdb ile tamamen aynıdır .
Tam olarak aynıysa, neden bu seçeneklere sahibiz? John Robbins (Windows hata ayıklama tanrısı) bunların tarihsel nedenlerle orada olduklarını keşfetti .
.NET 1.0'da farklılıklar vardı, ancak .NET 2.0'da yok. Görünüşe göre .NET 4.0 aynı kalıbı izleyecek. CLR Hata Ayıklama Ekibi ile iki kez kontrol ettikten sonra, hiçbir fark yoktur.
JITter'in bir hata ayıklama derlemesi yapıp yapmadığını kontrol eden şey / optimize anahtarıdır. <...>
Sonuç olarak, sürüm yapılarınızı / optimize + ve / debug anahtarlarından herhangi biri ile oluşturmak istemenizdir, böylece kaynak koduyla hata ayıklayabilirsiniz.
sonra bunu kanıtlamaya devam ediyor.
Artık optimizasyon ayrı bir anahtarın parçasıdır /optimize
(visual studio'da buna denir Optimize code
).
Kısacası, DebugInfo ayarının yalnızca pdb-only veya full olmasına bakılmaksızın, aynı sonuçları alacağız. Öneri önlemek için Yok yayımlandıktan ürün veya takılarak ayıklananları kazasında döker analiz edememek mahrum olacağından.