Aracılığıyla paylaş


Hata ayıklayıcıda yürütme akışını değiştirmek için yürütme işaretçisini taşıma

Hata ayıklama sırasında, yürütme işaretçisini el ile taşıyarak sonraki çalıştırılacak deyimi değiştirebilirsiniz. İşaretçinin taşınması, bilinen bir hata içeren kodu atlama gibi durumlarda kullanışlıdır ve hata ayıklayıcının daha gelişmiş bir özelliğidir.

Yürütme akışını değiştirme

Hata ayıklayıcı duraklatıldığında, kaynak kodun veya Ayrıştırma penceresinin kenar boşluğundaki sarı ok, sonraki çalıştırılacak deyimin konumunu işaretler. Bu oku taşıyarak çalıştırılacak sonraki deyimi değiştirebilirsiniz. Kodu atlayabilir veya önceki bir satıra dönebilirsiniz.

İşaretçinin nasıl taşındığını gösteren animasyon.

Bir sonraki çalıştırılacak ifadeyi değiştirmek istiyorsanız, hata ayıklayıcının kesme modunda olması gerekir. Kaynak kodunda veya Ayrıştırma penceresinde sarı oku farklı bir satıra sürükleyin veya sonrakini çalıştırmak istediğiniz satıra sağ tıklayıp Sonraki Deyimi Ayarla'yı seçin.

Program sayacı doğrudan yeni konuma atlar. Eski ve yeni yürütme noktaları arasındaki yönergeler çalıştırılamaz. Ancak yürütme noktasını geriye doğru taşırsanız, aradaki yönergeler geri alınmaz.

Dikkat

  • Sonraki deyimi başka bir işleve veya kapsama taşımak, genellikle bir çalışma zamanı hatası veya istisnaya yol açan çağrı yığını hatasına neden olur. Sonraki deyimi başka bir kapsama taşımaya çalışırsanız, hata ayıklayıcı size bir uyarı ve işlemi iptal etme şansı verir.
  • Visual Basic'te sonraki deyimi başka bir kapsama veya işleve taşıyamazsınız.
  • Yerleşik C++'da, çalışma zamanı denetimleri etkinleştirildiğinde, yürütme metodun sonuna ulaştığında bir sonraki deyimi ayarlamak istisnaya neden olabilir.
  • Düzenle ve Devam Et etkinleştirildiğinde, Düzenle ve Devam Et'in hemen yeniden eşleyemediği düzenlemeler yaptıysanız Sonraki Deyimi Ayarla başarısız olur. Bu durum, örneğin bir catch bloğunda kod düzenlediyseniz oluşabilir. Bu durumda, bir hata iletisi işlemin desteklenmediğini bildirir.
  • Yönetilen kodda, aşağıdaki durumlarda sonraki deyimi taşıyamazsınız:
    • Sonraki deyim geçerli deyimden farklı bir yöntemdedir.
    • Hata ayıklama, Just-In-Time hata ayıklama ile başlatıldı.
    • Çağrı yığını geri alma işlemi devam ediyor.
    • System.StackOverflowException veya System.Threading.ThreadAbortException istisnası oluştu.