Hata: 'function' işlevi değerlendirilmekteyken hedef süreç 'code' koduyla sona erdi

Tam ileti metni: 'Function' işlevi değerlendirilirken hedef işlem, 'code' koduyla çıkış yaptı.

.NET nesnelerinin durumunu incelemeyi kolaylaştırmak için, hata ayıklayıcı otomatik olarak hata ayıklanan işlemi diğer kodları (genellikle özellik alıcı yöntemleri ve ToString işlevleri) çalıştırmaya zorlar. Çoğu senaryoda, bu işlevler başarıyla tamamlanabilir veya hata ayıklayıcı tarafından yakalanabilecek özel durumlar oluşturur. Ancak, çekirdek sınırlarını aştıkları, kullanıcı iletisi pompalama gerektirdiği veya kurtarılamadığı için özel durumların yakalanamadığı bazı durumlar vardır. Sonuç olarak, işlemi açıkça sonlandıran (örneğin, ExitProcess() çağrıları) veya yakalanamayan bir işlenmemiş özel durum üreten (örneğin, StackOverflowException) kod yürüten bir özellik getter veya ToString yöntemi, hata ayıklanan işlemi sonlandırır ve hata ayıklama oturumunu bitirir. Bu hata iletisiyle karşılaşırsanız, bu durum oluştu.

Bu sorunun yaygın nedenlerinden biri, hata ayıklayıcının kendi kendisini çağıran bir özelliği değerlendirmesi sonucunda yığın taşması istisnası oluşabilmesidir. Yığın taşması hatası kurtarılamaz ve hedef işlem sonlandırılır.

Bu hatayı düzeltmek için

Bu sorunun iki olası çözümü vardır.

Çözüm 1: Hata ayıklayıcının getter özelliğini veya ToString yöntemini çağırmasını engelleyin

Hata iletisi, hata ayıklayıcının çağırmaya çalıştığı işlevin adını görüntüler. İşlevin adıyla, değerlendirmede hata ayıklamak için Bu işlevi Anında penceresinden yeniden değerlendirmeyi deneyebilirsiniz. Hata ayıklama, işlenmeyen özel durumlarda hata ayıklayıcı durakladığı için, Anında penceresinden değerlendirilirken mümkündür; bu, Autos/Locals/Watch pencerelerindeki örtük değerlendirmelerden farklıdır.

Bu işlevi değiştirebiliyorsanız, hata ayıklayıcının özellik alıcısını veya ToString yöntemini çağırmasını engelleyebilirsiniz. Aşağıdakilerden birini deneyin:

  • yöntemini bir özellik getter veya ToString yöntemi dışında başka bir kod türüyle değiştirin ve sorun çözülür.

    -veya-

  • (İçin ToString) türünde bir DebuggerDisplay öznitelik tanımlayın, böylece hata ayıklayıcı ToString dışında farklı bir şeyi değerlendirebilir.

    -veya-

  • (Özellik alıcısı için) Özniteliği [System.Diagnostics.DebuggerBrowsable(DebuggerBrowsableState.Never)] özelliğine yerleştirin. Api uyumluluğu nedeniyle özellik olarak kalması gereken bir yönteminiz varsa ancak gerçekten bir yöntem olması gerekiyorsa bu yararlı olabilir.

Bu yöntemi değiştiremiyorsanız alternatif bir yönergede hedef işlemi bozabilir ve değerlendirmeyi yeniden deneyebilirsiniz.

Çözüm 2: Tüm örtük değerlendirmeyi devre dışı bırakma

Önceki çözümler sorunu çözmezse Özellik değerlendirmesini etkinleştir özelliğini devre dışı bırakabilirsiniz.

Araçlar>Seçenekleri bölmesini açın ve Tüm Ayarlar>Hata Ayıklama>Genel bölümünü genişletin. Özellik değerlendirmesini ve diğer örtük işlev çağrılarını etkinleştir onay kutusunu temizleyin.

Araçlar>Seçenekleri iletişim kutusunu açın ve Hata Ayıklama>Genel bölümünü genişletin. Özellik değerlendirmesini ve diğer örtük işlev çağrılarını etkinleştir onay kutusunu temizleyin.

Bu değişiklik çoğu örtük işlev değerlendirmesini devre dışı bırakır ve sorunu çözmelidir.