Visual Studio'da .NET hata ayıklayıcısını anlama

Tamamlandı

Önceki ünitede, hata ayıklayıcısının programınızın yürütmesini denetlemenize ve durumunu gözlemlemenize yardımcı olduğunu öğrenmiştiniz. Bu bölümde, bu görevlerin her ikisini de Visual Studio'da yapmayı öğreneceksiniz.

.NET ile Visual Studio hata ayıklayıcısını kullanmayı öğrenerek başlayalım.

Visual Studio Hata Ayıklayıcısı'nı kullanmaya başlama

Uygulamayı hata ayıklayıcı ekli olarak başlatmak için Visual Studio komut çubuğundaki Başlangıç düğmesini (düz yeşil üçgen) kullanın. Komut çubuğunun artık proje adımızı içerdiğine dikkat edin. Uygulama çalıştırıldıktan sonra daha fazla hata ayıklama aracı ve özelliği kullanılabilir hale gelir.

Visual Studio hata ayıklama denetimlerinin ekran görüntüsü.

  1. Çözüm yapılandırması, uygulamamızın Hata Ayıklama veya Sürüm modunda çalıştırılıp çalıştırılmayacağını belirtir
  2. Platform yapılandırması hedef CPU platformlarını belirtir
  3. Uygulamayı hata ayıklayıcı ekli olarak başlatır
  4. Uygulamayı hata ayıklayıcı eklenmeden başlatır

Yürütmeyi denetleme

Uygulama çalıştırıldıktan sonra, uygulamayı başlatmak için tıkladığınız Başlangıç düğmesinin yanında hata ayıklama denetimleri görüntülenir.

Visual Studio hata ayıklayıcısı yürütme denetimlerinin ekran görüntüsü.

  • 1) Yürütmeye devam edin veya duraklatın. Yürütme bir kesme noktasında duraklatılırsa, sonraki kesme noktasına isabet edene kadar devam etmek için bu düğmeyi seçin. Programınız çalışıyorsa bu düğme, yürütmeyi duraklatmak için kullanabileceğiniz bir duraklatma düğmesi olur.
  • 2) Hot Reload kontrolleri. Visual Studio 2022'de sunulan bu özellik, uygulamayı yeniden başlatmadan değişiklik yapmanızı ve kodunuzu yenilemenizi sağlar.
  • 3) Dur. Bu düğme çalışan uygulamayı durdurur ve hata ayıklayıcıyı da ayırır.
  • 4) Yeniden başlatın. Hata ayıklayıcı ekli olarak uygulamayı durdurur ve yeniden başlatır.
  • 5) Adım at. Sonraki deyim bir işlev çağrısıysa, bu işlevin ilk kod deyimine (komutuyla step aynı) gidin.
  • 6) Üzerinden geç. Sonraki deyim bir işlev çağrısıysa, kodu yürütür, ancak geçerli işlevde bir sonraki kod satırına hemen geçin.
  • 7) Dışa adım at. Bir işlevin içindeyseniz, bu işlevin kalan kodunu yürütür ve ilk işlev çağrısından sonraki ifadeye geri atlarsınız (komutla out aynı).

Kesme noktaları, hata ayıklamanın temel özelliklerinden biridir ve bu yüzden bu denetimlerle entegre olurlar; hadi, onları daha ayrıntılı olarak inceleyelim.

Kesme noktaları

Önceki ünitede öğrendiğiniz gibi, hata ayıklayıcı programınızın yürütülmesini analiz edip denetlemenize yardımcı olur. Uygulamanızı Visual Studio hata ayıklayıcısı ekli olarak başlattığınızda kodunuz hemen yürütülmeye başlar. Kodunuz hızlı bir şekilde yürütüldüğünden, bir deyim gördüğünüzde programı duraklatabilmeniz gerekir. Bunu yapmak için kesme noktaları kullanırsınız.

Kesmek istediğiniz satırdaki satır numarasının sol tarafına tıklayarak Visual Studio'da kesme noktası ekleyebilirsiniz. Kesme noktasının etkinleştirildikten sonra kırmızı bir daire görmeniz gerekir. Kırmızı daireyi tekrar seçerek kaldırabilirsiniz.

Visual Studio düzenleyici penceresine eklenen kesme noktasının ekran görüntüsü.

Kesme noktası eklemek için sağ tıklarsanız veya var olan bir kesme noktasına sağ tıklarsanız Koşullu Kesme Noktası Ekle'yi de seçebilirsiniz. Bu özel kesme noktası türü, kesme noktasının tetiklendiğinde kullanılacak bir koşul veya ölçüt tanımlamanızı sağlar. Bu menü, diğer işlemlerle birlikte zincirlenebilir kesme noktaları oluşturmak için Yalnızca Aşağıdaki kesme noktasına isabet edildiğinde etkinleştir seçeneğini belirlemenize de olanak tanır.

Visual Studio'da koşullu kesme noktası ayarlama işleminin ekran görüntüsü.

Kodu yalnızca bir kez kesmek istiyorsanız geçici bir kesme noktası da kullanabilirsiniz. Kesme noktası sütununa sağ tıklayıp Geçici Kesme Noktası Ekle'yi seçerek geçici kesme noktaları uygulayabilirsiniz. Geçici kesme noktaları ilk kez vurulduktan sonra kaldırılır.

Sağ tıklayarak izleme noktalarını ekleyebilir ve kesme noktası sütununda İzleme Noktası Ekle'yi seçebilirsiniz. İzleme noktaları, kod yürütmenizi değiştirmeden veya durdurmadan yapılandırılabilir koşullar altında Çıktı penceresine bilgi kaydetmenize olanak sağlar.

Son olarak, Kesme Noktaları penceresinde (Windows>Kesme Noktalarında>), kodunuza yerleştirdiğiniz tüm kesme noktalarını görebilir ve değiştirebilirsiniz. Yakalanan veya yakalanmayan özel durumlarda kesme seçeneklerini de düzenleyebilirsiniz. Program durumunuzu incelemek ve bir özel durum oluştuğunda Çağrı yığınını kullanarak bir özel durumun kaynağını izlemek için Kesme Noktaları panelini kullanabilirsiniz.

Visual Studio Kesme Noktaları penceresinin ekran görüntüsü.

Visual Studio hata ayıklama araçları

Kesme noktalarınızı ayarladıktan ve uygulamanızı başlattıktan sonra ekranda yeni bilgi pencereleri ve denetimleri görüntülenir.

Visual Studio hata ayıklayıcısına genel bakış ekran görüntüsü.

  1. Hata ayıklayıcı başlatma denetimleri.
  2. Geçerli kesme noktası ve yürütme satırı.
  3. Değişken değerlerini izlemek için izleme penceresi.
  4. Tüm kesme noktalarını görüntülemek için kesme noktaları penceresi.

Üst gezinti çubuğu boyunca Windows'ta Hata Ayıkla'ya> tıklayarak diğer yararlı hata ayıklama pencerelerine de erişebilirsiniz. Örneğin, yaygın olarak kullanılan araçlar şunlardır:

  1. Çağrı Yığını penceresi: Hangi yöntemlerin çağrıldığını görüntülemenizi sağlar.
  2. Anında pencere: Hata ayıklarken ifadeleri yazmanıza ve değerlendirmenize olanak tanır.
  3. Otomatikler penceresi: Geçerli bağlamdaki değişkenlere otomatik olarak saat ekler.
  4. Çıkış penceresi: Konsola yazılan log ifadelerinin veya kodun çıkışını gösterir.

Visual Studio hata ayıklama penceresi seçeneklerinin ekran görüntüsü.

Değişkenlerin durumunu izleme ve düzenleme

Program hatasının nedenini analiz ettiğinizde, beklenmeyen değişiklikleri aramak için değişkenlerinizin durumunu izleyebilirsiniz. Visual Studio'da, değişkenlerinizin durumunu izlemek için farklı hata ayıklama bağlamlarında kullanabileceğiniz birden çok izleme penceresi seçeneği vardır.

  1. İzleme penceresi: Hata ayıklama sırasında seçilen değişkenleri ve ifadeleri zaman içinde izlemenizi sağlar.
  2. Yerel ayarlar penceresi: Geçerli yürütme kapsamındaki ve bağlamındaki değişkenleri otomatik olarak görüntüler.
  3. Otomatikler penceresi: Şu anda yürütülen veya önceki satırda kullanılan tüm değişkenleri otomatik olarak görüntüler.
  4. Hemen pencere: Hata ayıklama sırasında ifadeleri ve değişkenleri canlı olarak değerlendirmenize olanak tanır.

Visual Studio'da OtomatikLer penceresinin ekran görüntüsü.

Bu pencerelerin çoğu, hata ayıklama sırasında bir değişkenin değerine çift tıklamanıza ve değerini değiştirmenize de olanak sağlar.

İzleme penceresi, kodunuzun yürütülmesi sırasında değişkenleri izlemek için kullanışlıdır. Düzenleyicinizde bir değişkene sağ tıklayabilir ve izlemek için Ekle'yi seçebilirsiniz. Bu değişken artık izleme penceresinde görüntülenir ve uygulamanız yürütülürken otomatik olarak güncelleştirilir.

Saat eklemek için Otomatikler veya Yereller pencerelerindeki değişkenlere sağ tıklayabilirsiniz.

Hata ayıklama sırasında değişken bilgilerini görüntülemenin ve analiz etmenin bir diğer üretken yolu da Veri İpuçlarını kullanmaktır. Kesme noktasında duraklattığınızda, geçerli kapsamdaki herhangi bir değişkenin üzerine gelin. Değişken özelliklerinin adını ve geçerli değerini gösteren bir Veri İpucu görüntülenir. Doğrudan düzenleyici penceresinde bir işlev parametresinin veya değişkenin üzerine gelerek değerine de göz atabilirsiniz.

Çağrı yığını

Programınız bir işlev girdiğinde çağrı yığınına bir giriş eklenir. Uygulamanız karmaşık hale geldiğinde ve işlevler birçok kez diğer işlevler içinde çağrıldığında, çağrı yığını bu çağrıların izini temsil eder.

Bir özel durumun kaynağını bulmak için yararlıdır. Programınızda beklenmeyen bir kilitlenme varsa, konsolda genellikle aşağıdaki örneğe benzer bir şey görürsünüz:

Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at OrderProcessor.OrderQueue.ProcessNewOrders(String[] orderIds) in C:\Users\Repos\OrderProcessor\OrderQueue.cs:line 12
   at OrderProcessor.Program.Main(String[] args) in C:\Users\Repos\OrderProcessor\Program.cs:line 9

Hata iletisinin at [...] altındaki satır grubuna yığın izleme adı verilir. Yığın izlemesi, özel durum öncesinde çağrılan tüm işlevlerin adını ve kaynağını gösterir. Ancak, .NET çalışma zamanındaki iç işlevleri de içerdiğinden, deşifre edilmesi biraz zor olabilir.

Visual Studio Çağrı yığını penceresi burada kullanışlıdır. İstenmeyen bilgileri filtreleyerek varsayılan olarak yalnızca kendi kodunuzdaki ilgili işlevleri gösterir. Özel durumun nereden kaynaklandığını bulmak için bu çağrı yığınını çözebilirsiniz.

Çağrı Yığını penceresinin ekran görüntüsü.

Sonraki bölümde, daha önce gördüğümüz Fibonacci kodundaki hatayı düzeltmek için hata ayıklayıcıyı kullanarak bir alıştırma yapıyorsunuz.

Hata ayıklayıcısı ayarlarını belirtme

Visual Studio'da hata ayıklayıcı davranışı için çeşitli ayarlar belirtebilirsiniz. Değişkenlerin nasıl görüntülendiği, belirli uyarıların sunulup sunulmadığı, kesme noktalarının nasıl ayarlandığı ve kesmenin çalışan programları nasıl etkilediği dahil. Ayrıca projenizi Hata Ayıklama veya Yayın yapılandırması olarak derlemek üzere yapılandırabilirsiniz.

Hata ayıklayıcı ayarlarınızı yapılandırmak için, size farklı seçenek kategorileri sağlayan Araçlar>Seçenekler>Hata Ayıklama menüsünü kullanın. En yaygın seçenekler Genel kategorisindedir.