Aracılığıyla paylaş


Visual Studio hata ayıklayıcısında değişkenleri inceleyin ve değerleri döndürün

Bir sorunu ayıklamaya çalıştığınızda, genellikle değişkenlerin belirli bir uygulama durumunda sahip olmalarını beklediğiniz değerleri depolayıp depolamadığını bulmaya çalışırsınız. Hata ayıklayıcının en kullanışlı özelliklerinden bazıları, değişkenleri incelemenize izin veren özelliklerdir.

Bu makalede, Visual Studio'da hata ayıklayıcıyı kullanarak değişkenleri nasıl inceleyeceğiniz ve dönüş değerlerini nasıl görüntüleyeceğiniz gösterilmektedir. Hata ayıklayıcı, bu görevleri gerçekleştirmek için aşağıdakiler de dahil olmak üzere birkaç kullanışlı yol sağlar:

  • Kod düzenleyicisinde, veri ipuçlarını ve satır içi dönüş değerlerini görüntüleyebilirsiniz
  • Hata ayıklayıcı pencerelerinde (Otomatikler, Yereller ve İzleme pencereleri), değişken değerlerini görüntüleyebilirsiniz
  • Görselleştiricilerde büyük dizeleri veya karmaşık .NET nesnelerini görüntüleyebilirsiniz

Bu özellikler yalnızca hata ayıklama sırasında kullanılabilir. Hata ayıklama oturumunun nasıl başlatılacağını öğrenmek için bkz: Hata ayıklamayı başlatma ve kesme moduna girme.

Uyarı

Kodda hata ayıklamayı ilk kez denemiyorsanız, bu makaleye geçmeden önce Yeni Başlayanlar için Hata Ayıklama ve Hata Ayıklama teknikleri ve araçları'nı okumak isteyebilirsiniz.

Kod düzenleyicisinde değişkenleri görüntüleme

Genellikle, hata ayıklarken, kod düzenleyicisindeki nesnelerdeki özellik değerlerini denetlemenin hızlı bir yolunu istersiniz ve veri ipuçları bunu yapmanın iyi bir yoludur.

Hata ayıklayıcıda duraklatılırken fareyle bir nesnenin üzerine gelin ve değerini veya varsayılan özellik değerini görürsünüz.

Bir Veri İpucunu Görüntüle

Değişkenin özellikleri varsa, nesnesini genişleterek tüm özelliklerini görebilirsiniz.

Veri ipuçlarını kullanma hakkında ayrıntılı bilgi için bkz. Veri ipuçlarında veri değerlerini görüntüleme.

Kod düzenleyicisinde yöntem çağrılarının satır içi dönüş değerlerini görüntüleme

.NET ve C++ kodunda, bir yöntem çağrısının üzerine veya dışına çıktığınızda dönüş değerlerini inceleyebilirsiniz ve bu, dönüş değeri yerel bir değişkende depolanmadığında yararlı olabilir. Bir yöntem parametre olarak veya başka bir yöntemin dönüş değeri olarak kullanılabilir.

Visual Studio 2022 sürüm 17.12'den başlayarak, yöntem çağrılarının dönüş değerlerini yalnızca Autos penceresinde değil, satır içinde görüntüleyebilirsiniz.

Yöntem çağrılarının dönüş değerlerini gösteren ekran görüntüsü.

Copilot etkinleştirildiğinde, dönüş değeri için veri ipucunda görünen Copilot'a Sor düğmesini kullanarak satır içi dönüş değeriyle ilgili hedefli yardım da alabilirsiniz.

Copilot simgesiyle yöntem çağrılarının dönüş değerlerini gösteren ekran görüntüsü.

Hata ayıklayıcısı ayrıca döndürülen kod satırının sonundaki dönüş değerini gösteren satır içi dönüş sonrası değerleri de görüntüler.

Dönüş sonrası değerleri gösteren ekran görüntüsü.

Satır içi dönüş değerine sağ tıklayabilir ve satır içinde göstermek istediğiniz dönüş değerlerinin türüne ilişkin seçenekleri belirleyebilirsiniz.

Dönüş değerlerini görüntüleme seçeneklerini gösteren ekran görüntüsü.

Değişkenleri izlemeye al

İzlemek istediğiniz bir değişken (veya ifadeyi) belirtmek için izleme penceresini kullanabilirsiniz.

Hata ayıklama sırasında kod düzenleyicisinde bir nesneye sağ tıklayın ve İzleme Ekle'yi seçin. Bir İzleme penceresi açılır.

gözcü penceresini gösteren ekran görüntüsü.

Gözcü Penceresi

Bu örnekte, nesne üzerinde ayarlanmış bir saatiniz var ve hata ayıklayıcıda hareket ettikçe değerinin değiştiğini görebilirsiniz. Diğer değişken pencerelerinden farklı olarak, İzleme pencereleri her zaman izlemekte olduğunuz değişkenleri gösterir (kapsam dışında olduklarında gri görünürler).

Ayrıntılı bilgi için bkz. Watch ve QuickWatch Pencerelerini kullanarak saat ayarlama.

Satır içi değerleri görüntüleme

.NET ve C++ kodunda, Visual Studio aşağıdakiler için değerlendirme sonucunu satır içinde görüntüler: if deyimler, döngüler ve işlev parametresi değerleri.

Bir if deyim için Visual Studio, koşulun kendisinin sağındaki satır içi değeri görüntüler.

if deyimleri için satır içi değerleri gösteren ekran görüntüsü.

Döngü deyimi için satır içi değer aşağıdaki gibi görünür.

Döngü deyimleri için satır içi değerleri gösteren ekran görüntüsü.

İşlev parametreleri için satır içi değer de sağ tarafta görünür.

Copilot'larınız varsa değerlendirme için yapay zeka yardımı alabilirsiniz. Koşulun üzerine gelin ve Copilot ile Analiz Et seçin. Copilot, koşulu yalnızca alt ifadelerine bölmekle kalmaz, aynı zamanda beklenmeyen veya yanlış değerleri analiz etmekle kalmaz, sonucun neden beklediğinizden farklı olabileceğine ilişkin içgörüler sunar.

LINQ sorgularının dönüş değerlerini görüntüleme

Hata ayıklayıcıda duraklatılmış durumdayken, anında sorgu dönüş değerini değerlendirmek için LINQ sorgunuzun tek tek yan tümcelerinin veya kesimlerinin üzerine gelebilirsiniz.

LINQ sorgusunun dönüş değerinin ekran görüntüsü.

Copilot'unuz varsa, LINQ sorgusunun üzerine geldiğinizde yapay zekadan yardım alabilirsiniz. Sorguyu Copilot ile analiz etmek için Veri İpucu'nun sonundaki GitHub Copilot simgesini seçin. Ardından Copilot, LINQ sorgusunun söz dizimini açıklar ve belirtilen sonucu neden aldığınızı açıklar.

Yapay zeka yardımı alma

Copilot'unuz varsa, kod düzenleyicisinde veya Otomatikler veya Yereller pencerelerinde değişkenlere bakarken yapay zeka yardımı alabilirsiniz. Hata ayıklama yaparken bir değişkene sağ tıklayın ve Copilot ile ÇözümleCopilot ile Çözümle düğmesinin ekran görüntüsünü düğmesini kullanın. Bu senaryoda Copilot sorunuzun bağlamını zaten biliyor, bu nedenle sohbette bağlamı kendiniz sağlamanız gerekmez. Daha fazla bilgi için bkz. Copilot ile hata ayıklama.

Yapay zeka yardımı alma

Copilot'unuz varsa, kod düzenleyicisinde veya Otomatikler veya Yereller pencerelerinde değişkenlere bakarken yapay zeka yardımı alabilirsiniz. Hata ayıklarken bir değişkene sağ tıklayın ve Copilot'a SorEkran Görüntüsü Copilot'a Sor buton. düğmesini tıklayın. Bu senaryoda Copilot sorunuzun bağlamını zaten biliyor, bu nedenle sohbette bağlamı kendiniz sağlamanız gerekmez. Daha fazla bilgi için bkz. Copilot ile hata ayıklama.

Hata ayıklayıcı pencerelerinde değişkenleri denetleme (Otomatik Değişkenler ve Yerel Değişkenler)

Otomatik ve Yerel Değişkenler pencereleri, hata ayıklarken değişken değerleri gösterir. Pencereler yalnızca hata ayıklama oturumu sırasında kullanılabilir. Otomatikler penceresi, hata ayıklayıcının duraklatıldığı geçerli deyimin etrafında kullanılan değişkenleri gösterir. Locals penceresi, genellikle geçerli işlev veya yöntem olan yerel kapsamda tanımlanan değişkenleri gösterir.

  • Hata ayıklama sırasında Otomatikler penceresini açmak için Debug>Windows>Autos'u seçin veya Ctrl+Alt+V>A tuşuna basın.

    Otomatikler penceresi C#, Visual Basic, C++ ve Python kodu için kullanılabilir, ancak JavaScript veya F# için kullanılamaz.

  • Yereller penceresini açmak için, hata ayıklama sırasındaWindows>Yerel Öğelerinde> seçin veya Alt+4'e basın.

Genişletilebilir diziler ve nesneler Autos (Otomatikler) ve Locals (Yereller ) pencerelerinde gösterilir. Görünümü alanları ve özellikleri gösterecek şekilde genişletmek için değişken adının solundaki oku seçin. Aşağıda, Yereller penceresinde bir System.IO.FileStream nesne örneği verilmiştir:

Dosyanın System.IO.FileStream değerine ayarlanmış olduğu Yereller penceresinin ekran görüntüsü.

Dosyanın System.IO.FileStream değerine ayarlanmış olduğu Yereller penceresinin ekran görüntüsü.

Yereller veya Otomatikler penceresindeki kırmızı değer, değerin son değerlendirmeden bu yana değiştiği anlamına gelir. Değişiklik önceki bir hata ayıklama oturumundan veya penceredeki değeri değiştirdiğiniz için olabilir.

Hata ayıklayıcı pencerelerindeki varsayılan sayısal biçim ondalık sayıdır. Onaltılık olarak değiştirmek için, Yereller veya Otomatikler penceresine sağ tıklayın ve Onaltılık Sayı Görüntüsü seçeneğini seçin. Bu değişiklik tüm hata ayıklayıcı pencerelerini etkiler.

Otomatikler (Autos) veya Yereller (Locals) penceresinde değişken değerlerini düzenleyin

Otomatikler veya Yereller pencerelerinde çoğu değişkenin değerlerini düzenlemek için, değeri çift tıklatın ve yeni değeri girin.

Bir değer için ifade girebilirsiniz, örneğin a + b. Hata ayıklayıcı en geçerli dil ifadelerini kabul eder.

Yerel C++ kodunda, bir değişken adının bağlamını nitelemeniz gerekebilir. Daha fazla bilgi için bkz: Bağlam işleci (C++).

Dikkat

Değerleri ve ifadeleri değiştirmeden önce sonuçları anladığınızdan emin olun. Bazı olası sorunlar şunlardır:

  • Bazı ifadelerin değerlendirilmesi bir değişkenin değerini değiştirebilir veya programınızın durumunu başka bir şekilde etkileyebilir. Örneğin, var1 = ++var2'nın değerlendirilmesi hem var1 hem de var2'nin değerini değiştirir. Bu ifadelerin yan etkileri olduğu söyleniyor. Yan etkiler, farkında değilseniz beklenmedik sonuçlara neden olabilir.

  • Kayan nokta değerlerinin düzenlenmesi, kesirli bileşenlerin ondalıktan ikiliye dönüştürülmesi nedeniyle küçük hatalara neden olabilir. Görünüşte zararsız bir düzenleme bile, kayan nokta değişkenindeki bazı bitlerde değişikliklere neden olabilir.

Autos ya da Locals (Yereller) penceresinde arama yapın

Otomatikler veya Yereller penceresinin Ad, Değer ve Tür sütunlarında, her pencerenin üzerindeki arama çubuğunu kullanarak anahtar sözcükleri arayabilirsiniz. Bir arama yapmak için ENTER tuşuna basın veya oklardan birini seçin. Devam eden bir aramayı iptal etmek için arama çubuğundaki "x" simgesini seçin.

Bulunan eşleşmeler arasında gezinmek için sol ve sağ okları (sırasıyla Shift+F3 ve F3) kullanın.

Yerel Ayarlar penceresinde aramayı gösteren ekran görüntüsü.

Yerel Ayarlar Penceresinde Ara seçeneğinin ekran görüntüsü.

Aramanızı daha fazla veya daha az kapsamlı hale getirmek için, iç içe geçmiş nesnelerde kaç düzey derinlikte arama yapmak istediğinizi seçmek için Otomatikler veya Yereller penceresinin üst kısmındaki Daha Derin Ara açılır listesini kullanın.

Autos ya da Locals penceresinde özellikleri sabitleme

Uyarı

Bu özellik .NET Core 3.0 veya üzeri için desteklenir.

Sabitlenebilir Özellikler aracıyla Otomatik ve Yerel pencerelerindeki nesneleri özelliklerine göre hızlı bir şekilde inceleyebilirsiniz. Bu aracı kullanmak için, bir özniteliğin üzerine gelerek görünen raptiye simgesini seçin veya sağ tıklayıp açılan bağlam menüsünde Üyeyi Favori Olarak Sabitle seçeneğini belirleyin. Bu, söz konusu özelliği nesnenin özellik listesinin en üstüne çıkarır ve özellik adı ve değeri Değer sütununda görüntülenir. Bir özelliğin sabitlemesini kaldırmak için raptiye simgesini tekrar seçin veya bağlam menüsünde Üyeyi Favoriden Kaldır seçeneğini belirleyin.

Yerel penceresindeki Pin özelliklerinin ekran görüntüsü.

Ayrıca, Otomatikler veya Yereller pencerelerinde nesnenin özellik listesini görüntülerken özellik adlarını değiştirebilir ve sabitlenmemiş özellikleri filtreleyebilirsiniz. Otomatikler veya Yerel Ayarlar pencerelerinin üzerindeki araç çubuğunda bulunan düğmeleri seçerek her bir seçeneğe erişebilirsiniz.

Sık kullanılan özellikleri filtrele'nin ekran görüntüsü.

Sık kullanılan özellikleri filtrele'nin ekran görüntüsü.

Özellik adlarını değiştir'in ekran görüntüsü.

Otomatikler veya Yerel Değişkenler penceresinin bağlamını değiştirin

İstediğiniz bir işlevi, iş parçacığını veya işlemi seçmek için Hata Ayıklama Konumu araç çubuğunu kullanabilirsiniz ve bu da Otomatikler ve Yereller pencerelerinin bağlamını değiştirir.

Hata Ayıklama Konumu araç çubuğunu etkinleştirmek için, araç çubuğu alanının boş bir bölümüne tıklayın ve açılan listeden Hata Ayıkla'yı seçin veyaAraç Çubukları>Hata Ayıklama Konumunu> seçin.

Bir kesme noktası ayarlayın ve hata ayıklamaya başlayın. Kesme noktasına isabet edildiğinde yürütme duraklatılır ve konumu Hata Ayıklama Konumu araç çubuğunda görebilirsiniz.

Hata Ayıklama Konumu araç çubuğunun ekran görüntüsü.

Hata Ayıklama Konumu araç çubuğunun ekran görüntüsü.

Autos penceresindeki dil farklılıkları (C#, C++, Visual Basic, Python)

Farklı kod dilleri, Otomatikler penceresinde farklı değişkenler görüntüler.

  • C# ve Visual Basic'te, Autos penceresi geçerli veya önceki satırda kullanılan herhangi bir değişkeni görüntüler. Örneğin, C# veya Visual Basic kodunda aşağıdaki dört değişkeni bildirin:

         public static void Main()
         {
            int a, b, c, d;
            a = 1;
            b = 2;
            c = 3;
            d = 4;
         }
    

    Satırda c = 3;bir kesme noktası ayarlayın ve hata ayıklayıcıyı başlatın. Yürütme duraklatıldığında, Otomatikler penceresi şunları görüntüler:

    Otomatikler penceresinin, c değerinin 0 olarak ayarlandığı ekran görüntüsü.

    Otomatikler penceresinin, c değerinin 0 olarak ayarlandığı ekran görüntüsü.

    Satır c henüz yürütülmediği için değeri c = 3 0'dır.

  • C++'da Autos penceresi, yürütmenin duraklatıldığı geçerli satırdan en az üç satırda kullanılan değişkenleri görüntüler. Örneğin, C++ kodunda altı değişken bildirin:

         void main() {
             int a, b, c, d, e, f;
             a = 1;
             b = 2;
             c = 3;
             d = 4;
             e = 5;
             f = 6;
         }
    

    Satırda e = 5; bir kesme noktası ayarlayın ve hata ayıklayıcıyı çalıştırın. Yürütme durduğunda, Otomatikler penceresi şunları görüntüler:

    Otomatikler penceresinin ekran görüntüsü. int c değeri 3'tür.

    Autos penceresinin ekran görüntüsü, 3 değeriyle int c'yi gösteren satır vurgulanmıştır.

    Satır e = 5 henüz yürütülmediği için değişken e başlatılmamıştır.

Otomatikler penceresinde dönüş değerlerini görüntüleme

Aşağıdaki örnekte, bu C# kodu iki işlevin dönüş değerlerini ekler:

static void Main(string[] args)
{
    int a, b, c, d;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    int x = sumVars(a, b) + subtractVars(c, d);
}

private static int sumVars(int i, int j)
{
    return i + j;
}

private static int subtractVars(int i, int j)
{
    return j - i;
}

Autos penceresinde sumVars() ve subtractVars() yöntem çağrılarının dönüş değerlerini görmek için:

  1. Satır int x = sumVars(a, b) + subtractVars(c, d); üstüne bir kesme noktası ayarlayın.

  2. Hata ayıklamayı başlatın ve yürütme kesme noktasında duraklatıldığında Adım Geç'i seçin veya F10 tuşuna basın. Otomatikler penceresinde aşağıdaki dönüş değerlerini görmeniz gerekir:

Değişkenleri incelemek için bir görselleştirici açın

Visual Studio'da hata ayıklarken, verilerin incelenmesini kolaylaştıran yerleşik görselleştiricilerle büyük dizeleri veya karmaşık nesneleri görüntüleyebilirsiniz. Örneğin:

  • Dize görselleştiricisi, bir veri ipucu veya hata ayıklayıcı penceresi için çok uzun olan metin, XML, HTML ve JSON dizelerini gösterir. Ayrıca hatalı biçimlendirilmiş dizeleri belirlemenize de yardımcı olabilir. Daha fazla bilgi için bkz: Dize görselleştiricisinde dizeleri görüntüleme.
  • DataSet ve IEnumerable görselleştiricileri, .NET koleksiyon nesnelerini tablosal bir görselleştiricide gösterir. Daha fazla bilgi için bkz: Visual Studio'da Tablo görselleştiricileri) nesneleri.

Görselleştiriciler Otomatikler pencerelerinde, veri ipuçlarında ve diğer hata ayıklayıcı pencerelerinde görünür.

Uyarı

Görselleştiricide XAML veya WPF UI öğelerini incelemeniz gerekiyorsa, hata ayıklarken XAML özelliklerini incele bölümüne bakın veya WPF ağacı görselleştiricisini kullanma bölümüneveya bakın.

Bir görselleştiriciyi açmak için hata ayıklamayı duraklatmanız gerekir. Otomatikler penceresinde büyüteç simgesini VisualizerIcon seçin.

Metin görselleştiricinin nasıl açıldığını gösteren ekran görüntüsü.

Bir görselleştiriciyi açmak için hata ayıklama sırasında duraklatılmış olmanız gerekir. Desteklenen bir görselleştirici değerine sahip bir değişkenin üzerine gelin ve büyüteç simgesi VisualizerIcon'u seçin.

Dize görselleştiricisini açma