2009-03-09 32 views
11

ayıklarken değişkenlerin değerlerini görüntülemek, ben denemek ancak ne zaman ve ben almak hatayı bir özellik/değişkenin değerini kontrol edilemiyor:ben üzerinde çalışıyorum geçerli uygulamanın ayıklama bölümleri çalışıyorum

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

Bu, normal bir ASP.NET projesidir. Uygulamanın bazı bölümlerinde özellikleri ve değişkenleri mükemmel olarak görüntüleyebilirim.

cevap

10

Sorun, bir MSDN blogunda documented idi; belirli durumlarda belirli türlerde boyut sınırlaması olarak, bağlantıda daha fazla ayrıntı var. 256 bayt ve/veya bir işleve iletilen argüman sayısının toplam büyüklüğü/sayımı olduğuna inanıyorum. Üzgünüz, hızlı bir çözüm gibi görünmüyor, ama umarım MSDN blog girişi sorununuzu çözmeniz için bir yol belirlemenize yardımcı olacaktır.

+1

Bu hata için 256 bayt sınırlamanın (veya argüman sayısının) en yaygın neden olduğundan şüpheliyim. Bağlantılı makalede atıfta bulunulan makalede, [Funceval Kuralları] (http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx), bunun için bir dizi başka neden sunar. meydana gelebilir. – kristianp

+0

Bu, VS2008 RTM'de de oldu, bu yüzden SP1 onu düzeltebilirdi. Ayrıca VS2010'da bile var olduğunu bilmiyorum. – CertifiedCrazy

+0

FYI, aynı sorun VS2010'da bulunmaktadır. –

0

Değişkenlerin değerlerini göremediğim ve göremediğim kod blokları hakkında neyin farklı olduğunu anlayamadım mı? Yapılandırmayı "hata ayıklama" olarak değiştirmeyi deneyin ve gelişip gelişmediğini görün.

+0

Hayır, Çözüm Yapılandırması "Hata Ayıkla" olarak ayarlanmış –

+0

Çözüm "Hata Ayıklama" yapılandırmasının bir parçası olan tüm projelerin bu şekilde işaretlendiğinden emin olun. Hata ayıklama sadece takma addır ve * Projeler * çözüm geniş "Hata Ayıklama" yapılandırması altında "Release" olarak ayarlanmış olabilir. Kafa karıştırıcı? Evet. –

+0

Projelerimin her birinde gittim. Hepsi "Aktif (Debug)" olarak ayarlanmışlar, ancak hepsini "Hata Ayıklama" olarak değiştirdim. Hala hayır şans. –

0

Aynı problem, WinForm kullanıcı denetimlerimizin ikisinde de var. Her iki durumda da kullanıcı denetimleri çok sayıda iş mantığı (sırasıyla 2000 ve 3000 satır) içerir ve çok sayıda çok ağır nesneden yararlanırlar (özelliklerden biri olduğunda ilk kez veritabanından otomatik olarak doldurulmuş 30+ özelliğe sahiptirler) erişilir). (Biraz karmaşık) doğrulama ve kaydetme yöntemlerini adım atmaya çalıştığınızda, nesne özelliklerine erişmeye çalışırken aynı mesajı alırsınız.

Kullanıcı kontrolünün boyut ve karmaşıklığının, kullanılan nesnelerin boyutu ve karmaşıklığı ve koşullu veritabanı erişimi ile birleştirilmesi, hata ayıklayıcının işlenmesi için çok fazla hale geldiğimiz ve muhtemelen yalnızca bir kaçını yapmamız gerektiği sonucuna vardık. İş mantığının çoğunu kullanıcı kontrolünden çıkarmak için büyük bir refactoring. Probleminizin aynı türden bir durumdan kaynaklanıp kaynaklanmadığını ve bu türden bir refactoring işleminin gerçekten bir fark yaratıp yaratmadığını anlamak ilginç olacaktır (bunu yapmak için zaman ve/veya cesarete sahip olmadık :)).

2

Bu makalede, Rules of Funceval, bunun neden olabileceğine dair bir dizi neden sunmaktadır. Hata ayıklama açıksa ve optimizasyon zaten açıksa, bu sorunla ilgili yapabileceğiniz başka bir şey yok gibi görünüyor.

+0

Güzel yazı, teşekkürler! –

İlgili konular