Debug.Assert'i bir certion işlemi yaparken yapmaya çalışan bir kütüphane kullanıyorum, Debug.Assert'i kullanmaktan vazgeçmek var mı?Dur Debug.Assert?
cevap
ardından Marc doğru derlenmiş olacak, tanımlanmış DEBUG
sembol olmadan derlemek; Sadece DEBUG tanımlanmadan yeniden derleyin ve tüm iddialar ortadan kalkar.
Bunu yapamıyorsanız, kitaplığın kaynak kodunu bilmiyorsanız, programınızı Trace Listeners temizleyebilirsiniz. Bu şekilde itiraz ateşlendiğinde, hala patlar ama hiçbir şey yapmaz. (Ne zaman bir onaylama işlemi yangınlar, sadece dinleyicileri kayıtlı hangi iz bakar ve iddiayı hakkında bilgilendirmektedir. Hiçbir dinleyici hiçbir şey olmaz anlamına gelir.)
Bu senaryoda, bir müşteri iz varsayılan iz dinleyici değiştirilmesi düşünebilirsiniz Kendinizin dinleyicisi gibi bir şey yapan bir dosyaya iddiayı kaydeder. Bu şekilde, günlüğü gözden geçirebilir ve kütüphanenin hata ayıklama sürümünün "normal" yürütülmesinde hangi iddiaların atılacağını görebilirsiniz.
sonra Debug.Assert
için hiçbir aramalar (yöntemleri [Conditional("DEBUG")]
ile tanımlanır) Eğer kütüphane yeniden derlemek Eğer
İkili mi kullanıyorsunuz yoksa kitaplık kaynağınız var mı? Eski durumda, neden bir Hata Ayıklama oluşturup bırakmadıklarını öğrenmek için satıcınızla görüşmenizi ve kodundaki bir hata olan Assert hakkında bilgi vermenizi öneririm (Kodun beklenen şekilde yürütülmesi durumunda iddianın başarısız olması durumunda bile onaylama hatalarının oluşmaması gerekir) . istisnai durumlar)
Sen Debug.Assert(false)
üzerine kırma inhibe sizin app.config
dosyasına aşağıdaki bölümü ekleyin: Ayrıntılar için
<configuration>
<system.diagnostics>
<assert assertuienabled="false"/>
</system.diagnostics>
</configuration>
assert
element ve DefaultTraceListener.AssertUiEnabled Property görüyoruz.
- 1. Dur setInterval
- 2. Dur NSDictionary
- 3. SQL Server için Debug.Assert Eşdeğeri
- 4. Dur yönteminin yürütülmesi - Swift
- 5. Dur Derleme Kanunu
- 6. NSData uzak dur şamandıra değeri
- 7. dur jquery onChange özyinelemeli yineleme
- 8. Dur yapışkan önyükleme sütunu div
- 9. Resharper'ın Trace.Assert'i Debug.Assert gibi ele almasının bir yolu var mı?
- 10. Dur Iframe, ana belgenin kaydırılmasını engelliyor mu?
- 11. D3.js: Dur geçişleri kesintiye uğradı mı?
- 12. Visual Studio'da "Dur Debugging" ve "Tümünü Sonlandır" arasındaki fark nedir?
- 13. Dur ReSharper yeni satıra JavaScript işlevi parametresini koyarak gelen
- 14. Meteor Şablon tahrip edilir Dur Tracker Autorun benim Meteor şablonunda
- 15. Jquery sürüklenebilir ve bırakılabilir olay temsilci: dur & bırak
- 16. Dur JQUERY komut ekran boyutu ise en fazla
- 17. Uygulama içi satın alımlar “incelemede”, uygulama ikili ise hala “inceleme için bekliyor” dur. Bu ne demek?
- 18. NMAKE: ölümcül hata U1077: 'cl.exe': dönüş kodu '0x1' Dur. Komut isteminde
- 19. AutoFac en Func <T> hizmet
- 20. Bir devralma sınıfında doğrudan tanımlanan arabirimlerin listesini nasıl numaralandırırım?
- 21. Null için C# new() ilklendirmesini kontrol ediyor musunuz?
- 22. Dur IntelliJ 11 JSLint nasıl JSLint etkinleştirildiğinde oluşturmak her iç içe işlev tanımına <code>"use strict"</code> ekleyerek otomatik IntelliJ 11 durdurmaya
- 23. Visual Studio 2010/2012: Dur hata ayıklamada hata ayıklama işleminin hata ayıklama işlemi askıda kaldığında ve bazı durumlarda bir hile ile
- 24. : cmd mvn kargoda catalina kabı belirtme
- 25. Birden çok geri arama bekle
- 26. Boost veya STL ile Özel Bir Dize Görüntüleyebilecek C++ İddiaları?
- 27. iOS7 UIRefreshControl, contentInset'i değiştiriyor
- 28. Visual Studio'nun editördeki satırları (Atma gibi) renklendirmesi için bir ayar veya iyi bir eklenti var mı?
- 29. Kaynak hattı numarasını Perl'de nasıl yazdırabilirim?
- 30. Bir para birimi için html kodu nasıl bulunur?
Elbette. Ve sonra program, Assert'te devletin herhangi bir yolsuzluğu tespit edildiğinde devam edecek ve felaket sizi en iğrenç bir şekilde görecektir. Neden itirazda bulunmaya itiraz etmiyorsun? –
@Jeffrey: sizin noktanız iyi alınmış olsa da, muhtemelen iddialar hatalıdır; Kod doğruysa, ilk etapta bir itiraz ateşi yapmanın bir yolu olmamalıdır. İddia, muhtemelen kütüphanedeki bir hatayı gösterir, arayanın kodundaki bir hatayı değil. Eğer Levi hatanın iyi huylu olduğunu tespit ederse, o zaman kod düzeltilene kadar savı bastırmak faydalı olabilir. –
@Eric Lippert - Kütüphane yazarının Assert'in doğru kullanımını anlayamadığını düşündüm (asla ateş etmemesi gerektiğinden), ancak ilk önce çekinin yapılmasının bir nedeni olmalı. Belki de bir istisnanın atılması gereken bir şeydir. Önemli olmayan bir durum için bir test eklemiş olmaları muhtemel görünmüyor. Ama sonra tekrar yaptılar. Eğer öyleyse, belki de bu hatalar olmadan başka bir kütüphane aranmalıdır! :) –