2012-03-25 12 views
5

C# 4.0 (VS2010) 'da bir uygulama üzerinde çalışıyorum ve çok garip bir durumum var. Tüm ekipten bana bir hata bildirildi ve diğer geliştiricilerden biri, VS2010'dan başlatılmak yerine yürütülebilir dosyayı çift tıklatarak hatanın senaryosunu takip etmeme kadar her zaman yeniden üretemedim.Visual Studio'nun bir yürütülebilir dosyayı başlatması ve başlatması arasındaki fark nedir?

Bazı araştırmalardan sonra, bu sorunla ilgili yorumların çoğunun başlatılmamış yığın bellek ve benzeriyle ilgili olduğunu, ancak C++ bağlamında buldum. Bir değişkenin başlatılmamış bırakılması durumunda C# hata hata yerine bir uyarı oluşturduğunu biliyorum, bu büyük olasılıkla sorun değil. Hem oluşturur

benim makine ve kullanıcı haklarına ilişkin aynıdır ve Ctrl + F5 yapar iken şimdi, F5 (ayıklamaya başlayın) basarak sorunu üretmez biliyoruz. Yani soru, ikisi arasındaki fark değil (diğer sorular zaten bunu işaret ediyordu), fakat bir hata ayıklayıcısını C# sürecine nasıl bağlayabiliriz?

Bu kod, ağ üzerinden bir bağlantı oluşturur.

cevap

7

Soru şu: Bir C# işlemine hata ayıklayıcısını eklemek davranışını nasıl etkiler? Her türlü yolla, . JIT optimizasyonlarını, çöp toplamasını, zamanlamayı (düşünme yarışı koşullarını), hata ayıklayıcısında çalışıp çalışmadığını ve potansiyel olarak tür başlatmanın sırası ve zamanlamasını belirlemeye çalışan her şeyi etkiler.

Şimdi yeniden üretebiliyorsanız, günlüğe kaydetme eklemeye başlayacak ve size nereye götürdüğüne bakacağım - sorunun ne olduğunu anladığınızda, hata ayıklayıcının neden bir şeyleri değiştirdiğini açıkça görebilirsiniz.

+0

Hata ayıklayıcısında çalıştırmayla ilgili yukarıda bahsedilen sorunların, bence, hatanın en olası nedeni, kodun bir hata ayıklayıcıda çalıştırıldığını açıkça algılayamadığı varsayılarak bir yarış koşulu olduğunu unutmayın. JIT optimizasyonları ve çöp toplama sorunlarının, sürüm oluşturma işleminde değil, hata ayıklama yapısında bir hata olarak ortaya çıkması daha olasıdır. – dotancohen

+0

[@JonSkeet, @dotancohen] Sorunlu yöntem çizgileri boyunca mesaj kutuları üreterek bu problem üzerinde çalışmayı deniyordum. İlk denememde, ilk kod satırından bir mesaj kutusu ürettim. Sorun bir daha asla ortaya çıkmadı! Bunun nedeni ne olabilir? Bir mesaj kutusu nasıl bir fark yaratır? – OmarOthman

+0

@OmarOthman: * Çok * kolayca - bir mesaj kutusu * çok * invaziv, zamanlama vb radikal etkileme açısından daha az invaziv kayıt kullanarak tavsiye ederim ... ideal sadece düzenli olarak dosya sistemi dokunmadan, etkiyi azaltmak için zamanlama vb –

İlgili konular