Visual Studio Hata Ayıklayıcısı'nda Kesme Noktaları sorunlarını giderme

Şunlar için geçerlidir: Visual Studio

Kesme noktası uyarıları

Hata ayıklama sırasında kesme noktasının iki olası görsel durumu vardır:

  • Hata ayıklayıcısı hedef işlemde başarılı bir kesme noktası ayarladıysa, düz kırmızı bir daire.
  • Kesme noktası devre dışı bırakılmış veya kesme noktası ayarlanırken uyarı oluşan boş (beyaz dolgulu) bir daire.

Farkı belirlemek için kesme noktasının üzerine gelin ve uyarı olup olmadığına bakın. Aşağıdaki iki bölümde önemli uyarılar ve bunların nasıl düzeltileceğini açıklanmaktadır.

"Bu belge için hiçbir Simge yüklenmedi"

Hata ayıklama sırasında Modüller penceresine (Windows>ModüllerindeHata Ayıklama>) gidin ve modülünüzün yüklenip yüklenmediğini denetleyin.

  • Modülünüz yüklendiyse sembollerin yüklenip yüklenmediğini görmek için Simge Durumu sütununu denetleyin.
    • Simgeler yüklenmezse, sorunu tanılamak için simge durumunu denetleyin. Modüller penceresindeki bir modülün bağlam menüsünden Simge Yükleme Bilgileri... öğesini seçerek hata ayıklayıcının sembolleri nerede deneyip yüklediğini görün. Simgeleri yükleme hakkında daha fazla bilgi için bkz. Simge Belirtme (.pdb) ve Kaynak Dosyalar.
    • Simgeler yüklenirse, PDB kaynak dosyalarınız hakkında bilgi içermez. Birkaç olası neden şunlardır:
      • Kaynak dosyalarınız yakın zamanda eklendiyse modülün güncel bir sürümünün yüklendiğini onaylayın.
      • /PDBSTRIPPED bağlayıcı seçeneği kullanılarak kaldırılmış PDB'ler oluşturulabilir. Kaldırılan PDB'ler kaynak dosya bilgilerini içermez. Soyuldu PDB değil tam PDB ile çalıştığınızı onaylayın.
      • PDB dosyası kısmen bozuk. Dosyayı silin ve sorunu çözmeye çalışmak için modülün temiz bir derlemesini çalıştırın.
  • Modülünüz yüklenmemişse nedenini bulmak için aşağıdakileri denetleyin:
    • Doğru işlemde hata ayıkladığınızı onaylayın.
    • Doğru kodda hata ayıkladığınızı denetleyin. Hata ayıklayıcının hata ayıklamak için yapılandırıldığı kod türünü İşlemler penceresinde bulabilirsiniz (Windows>İşlemlerindeHata Ayıklama>). Örneğin, C# kodunda hata ayıklamaya çalışıyorsanız, hata ayıklayıcınızın uygun .NET türü ve sürümü (örneğin, Yönetilen (v4*) ile Yönetilen (v2*/v3*) ve Yönetilen (CoreCLR) için yapılandırıldığını onaylayın.

"… geçerli kaynak kodu yerleşik sürümden farklı..."

Kaynak dosya değiştiyse ve kaynak artık hata ayıkladığınız kodla eşleşmiyorsa, hata ayıklayıcı varsayılan olarak kodda kesme noktaları ayarlamaz. Normalde, bir kaynak dosya değiştirildiğinde ancak kaynak kod yeniden derlenemediğinde bu sorun oluşur. Bu sorunu çözmek için projeyi yeniden derleyin. Derleme sistemi, projenin henüz güncel olmadığını düşünüyorsa, proje sistemini yeniden derlemeye zorlayabilirsiniz. Kaynak dosyayı yeniden kaydederek veya derlemeden önce derleme çıkışını temizleyerek projeyi yeniden derleyin.

Nadir senaryolarda, eşleşen kaynak kodu olmadan hata ayıklamak isteyebilirsiniz. Kaynak kodu eşleştirmeden hata ayıklamak kafa karıştırıcı bir hata ayıklama deneyimine yol açabilir, bu nedenle nasıl devam etmek istediğinizden emin olun.

Bu güvenlik denetimlerini devre dışı bırakmak için seçeneklerden birini izleyin:

  • Tek bir kesme noktasını değiştirmek için düzenleyicideki kesme noktası simgesinin üzerine gelin ve ayarlar (dişli) simgesini seçin. Düzenleyiciye bir göz atma penceresi eklenir. Göz atma penceresinin en üstünde kesme noktasının konumunu gösteren bir köprü vardır. Kesme noktası konumunun değiştirilmesine izin vermek için köprüyü seçin ve Kaynak kodun özgün konumdan farklı olmasını sağlayın seçeneğini işaretleyin.
  • Bu ayarı tüm kesme noktaları için değiştirmek için Hata Ayıklama>Seçenekleri ve Ayarlar'a gidin. Hata Ayıklama/Genel sayfasında, Özgün sürümle tam olarak eşleşen kaynak dosyaları iste seçeneğini temizleyin. Hata ayıklamayı bitirdiğinizde bu seçeneği yeniden etkinleştirmeyi unutmayın.

Kesme noktası başarıyla ayarlandı (uyarı yok), ancak isabet etmedi

Bu bölüm, hata ayıklayıcı herhangi bir uyarı görüntülemediğinde sorunları gidermeye yönelik bilgiler sağlar. Kesme noktası etkin bir şekilde hata ayıklarken düz kırmızı bir dairedir, ancak kesme noktasına isabet edilmemektedir.

Denetlenecek birkaç şey şunlardır:

  1. Kodunuz birden fazla işlemde veya birden fazla bilgisayarda çalışıyorsa, doğru işlemde veya bilgisayarda hata ayıkladığınızdan emin olun.
  2. Kodunuzun çalıştığını onaylayın. Kodunuzun çalıştığını test etmek için kesme noktasını ayarlamaya çalıştığınız kod satırına System.Diagnostics.Debugger.Break (C#/VB) veya __debugbreak (C++) çağrısı ekleyin ve projenizi yeniden derleyin.
  3. İyileştirilmiş kodda hata ayıklaması yapıyorsanız kesme noktanızın ayarlandığı işlevin başka bir işlevde satır içine alınmadığından emin olun. Önceki Debugger.Break denetimde açıklanan test, bu sorunu test etmek için de çalışabilir.
  4. İşlem senaryolarına eklemek için doğru kod türünde hata ayıkladığınızdan emin olun (örneğin, betik kodu ile .NET Framework karşı .NET 5+). Araştırmak için, İşleme Ekle iletişim kutusundaki Ekle seçeneğini işaretleyin ve kod türünü değiştirmek için Gerekirse Seç'i seçin.

Bir kesme noktasını sildim, ancak hata ayıklamaya yeniden başladığımda kesme noktasına vurmaya devam ediyorum

Hata ayıklama sırasında bir kesme noktasını sildiyseniz, hata ayıklamaya bir sonraki başladığınızda kesme noktasına yeniden basabilirsiniz. Bu kesme noktasına isabet etmeyi durdurmak için kesme noktasının tüm örneklerinin Kesme Noktaları penceresinden kaldırıldığından emin olun.