Visual Studio'da izleme noktalarını kullanarak Çıkış penceresindeki günlük bilgileri

İzleme noktaları, kodunuzu değiştirmeden veya durdurmadan yapılandırılabilir koşullar altında çıktı penceresinde bilgileri günlüğe kaydetmenize olanak sağlar. Bu özellik hem yönetilen diller (C#, Visual Basic, F#) hem de yerel kod ile JavaScript ve Python gibi diller için desteklenir.

Dekont

.NET API'lerini kullanarak program aracılığıyla Çıkış penceresine bilgi kaydetme hakkında bilgi için bkz . Çıkış penceresine ileti gönderme.

Şimdi bir örnek alalım

Aşağıdaki örnek program, döngü başka bir yineleme çalıştırdığında bir sayaç değişkenine sahip basit for bir döngüdür.

Screenshot of a sample counter program.

Aşağıdaki örnek program, döngü başka bir yineleme çalıştırdığında bir sayaç değişkenine sahip basit for bir döngüdür.


using System.Diagnostics;

namespace Tracepoints
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int counter = 0;
            for (int i=0; i<=10; i++)
            {
                counter +=1;
            }
        }
    }
}

Kaynak kodunda izleme noktaları ayarlama

Kesme Noktası Ayarlar penceresindeki Eylem onay kutusunun altında bir çıkış dizesi belirterek izleme noktaları ayarlayabilirsiniz.

  1. İzleme noktasını başlatmak için, önce izleme noktasını ayarlamak istediğiniz satır numarasının sol tarafındaki cilt payı öğesine tıklayın.

    Screenshot showing the Breakpoint Initialization in the sample code.

  2. Kırmızı dairenin üzerine gelin ve dişli simgesine tıklayın.

  3. Bu eylem Kesme Noktası Ayarlar penceresini açar.

    Screenshot showing Breakpoint Window.

  4. Eylem onay kutusunu seçin.

    Screenshot of breakpoint window with Actions Box checked.

    Kırmızı dairenin bir kesme noktasından izleme noktasına geçtiğinizi gösteren bir baklavaya nasıl değiştiğine dikkat edin.

  5. Çıkış Penceresi'nde ileti göster metin kutusunda oturum açmak istediğiniz iletiyi girin (ayrıntılar için bu makalenin sonraki bölümlerine bakın).

    İzleme noktanız artık ayarlandı. Tek yapmak istediğiniz bazı bilgileri Çıkış Penceresi'ne kaydetmekse "Kapat" düğmesine basın.

  6. İletinizin görüntülenip görüntülenmeyeceğini belirleyen koşullar eklemek istiyorsanız Koşullar onay kutusunu seçin.

    Screenshot of breakpoint window with Conditions Box checked.

    Koşul için üç seçeneğiniz vardır: Koşullu İfade, Filtre ve İsabet Sayısı.

Kesme Noktası Ayarlar penceresindeki Eylem onay kutusunun altında bir çıkış dizesi belirterek izleme noktaları ayarlayabilirsiniz.

  1. İzleme noktasını başlatmak için, önce izleme noktasını ayarlamak istediğiniz satır numarasının sol tarafındaki cilt payı öğesine tıklayın.

    Screenshot showing the Breakpoint Initialization in the sample code.

  2. Kırmızı dairenin üzerine gelin ve dişli simgesine tıklayarak Kesme Noktası Ayarlar penceresini açın.

    Screenshot showing Breakpoint Window.

  3. Eylem onay kutusunu seçin.

    Screenshot of breakpoint window with Actions Box checked.

    Kırmızı dairenin bir kesme noktasından izleme noktasına geçtiğinizi gösteren bir baklavaya nasıl değiştiğine dikkat edin.

  4. Çıkış Penceresi'nde ileti göster metin kutusunda oturum açmak istediğiniz iletiyi girin (ayrıntılar için bu makalenin sonraki bölümlerine bakın).

    İzleme noktanız artık ayarlandı. Tek yapmak istediğiniz bazı bilgileri Çıkış Penceresi'ne kaydetmekse "Kapat" düğmesine basın.

  5. İletinizin görüntülenip görüntülenmeyeceğini belirleyen koşullar eklemek istiyorsanız Koşullar onay kutusunu seçin.

    Screenshot of breakpoint window with Conditions Box checked.

    Koşul için üç seçeneğiniz vardır: Koşullu İfade, Filtre ve İsabet Sayısı.

Eylemler menüsü

Bu menü, bir iletiyi Çıkış penceresine kaydetmenize olanak tanır. çıktısını almak istediğiniz dizeleri ileti kutusuna yazın (tırnak işareti gerekmez). Değişkenlerin değerlerini görüntülemek istiyorsanız, küme ayracı içine eklediğinizden emin olun.

Örneğin, değişkenin counter değerini çıkış konsolunda görüntülemek istiyorsanız, ileti metin kutusuna {counter} yazın.

Screenshot showing Counter Output Message.

Kapat'a tıklar ve ardından programda (F5) hata ayıklarsanız, Çıkış penceresinde aşağıdaki çıkışı görürsünüz.

Screenshot showing Actions Message In Output Window.

Daha özel bilgiler görüntülemek için özel anahtar sözcükler de kullanabilirsiniz. Anahtar sözcüğü aşağıda gösterildiği gibi tam olarak girin (her anahtar sözcüğün önünde bir "$" kullanın ve anahtar sözcüğün kendisi için tüm büyük harflerini kullanın).

Anahtar sözcük Görüntülenenler
$ADDRESS Geçerli yönerge
$CALLER İşlev adı çağrılır
$CALLSTACK Çağrı yığını
$FUNCTION Geçerli işlev adı
$PID Process ID
$PNAME İşlem adı
$TID İş Parçacığı Kimliği
$TNAME İş parçacığı adı
$TICK Değer sayısı (Windows GetTickCount'tan)

Bu menü, bir iletiyi Çıkış penceresine kaydetmenize olanak tanır. çıktısını almak istediğiniz dizeleri ileti kutusuna yazın (tırnak işareti gerekmez). Değişkenlerin değerlerini görüntülemek istiyorsanız, küme ayracı içine eklediğinizden emin olun.

Örneğin, değişkenin değerini counter çıkış konsolunda görüntülemek istiyorsanız ileti metin kutusuna yazın {counter} .

Screenshot showing Counter Output Message.

Kapat'a tıklar ve ardından programda (F5) hata ayıklarsanız, Çıkış penceresinde aşağıdaki çıkışı görürsünüz.

Screenshot showing Actions Message In Output Window.

Daha özel bilgiler görüntülemek için özel anahtar sözcükler de kullanabilirsiniz. Anahtar sözcüğü aşağıda gösterildiği gibi tam olarak girin (her anahtar sözcüğün önünde bir "$" kullanın ve anahtar sözcüğün kendisi için tüm büyük harflerini kullanın).

Anahtar sözcük Görüntülenenler
$ADDRESS Geçerli yönerge
$CALLER İşlev adı çağrılır
$CALLSTACK Çağrı yığını
$FUNCTION Geçerli işlev adı
$PID Process ID
$PNAME İşlem adı
$TID İş Parçacığı Kimliği
$TNAME İş parçacığı adı
$TICK Değer sayısı (Windows GetTickCount'tan)

Koşullar menüsü

Koşullar, çıkış iletilerinizi filtrelemenizi sağlar, böylece bunlar yalnızca belirli senaryolarda görüntülenir. Kullanabileceğiniz üç ana koşul türü vardır.

Koşullu ifade

Koşullu ifade için, çıkış iletisi yalnızca belirli koşullar karşılandığında görüntülenir.

Koşullu ifadeler için, belirli bir koşul doğru olduğunda veya değiştiğinde bir iletinin çıkışını almak için izleme noktasını ayarlayabilirsiniz. Örneğin, yalnızca döngünün yinelemeleri for sırasında sayacın değerini görüntülemek istiyorsanız, True seçeneğini belirleyip ileti metin kutusuna yazabilirsinizi%2 == 0.

Screenshot showing Conditional Expression Is True.

Döngünün yinelemesi for değiştiğinde sayacın değerini yazdırmak istiyorsanız Değiştirildiğinde seçeneğini belirleyin ve ileti metin kutusuna yazıni.

Screenshot showing when Conditional Expression is Changed.

Değiştirildiğinde seçeneğinin davranışı farklı programlama dilleri için farklıdır.

  • Yerel kod için hata ayıklayıcı koşulun ilk değerlendirmesini değişiklik olarak değerlendirmez, bu nedenle ilk değerlendirmede izleme noktasına isabet etmez.
  • Yönetilen kod için hata ayıklayıcı, Değiştirildiğinde seçildikten sonra ilk değerlendirmede izleme noktasına isabet eder.

Koşulları ayarlarken kullanabileceğiniz geçerli ifadelere daha kapsamlı bir bakış için bkz . Hata ayıklayıcıdaki ifadeler.

Koşullu ifade için, çıkış iletisi yalnızca belirli koşullar karşılandığında görüntülenir.

Koşullu ifadeler için, belirli bir koşul doğru olduğunda veya değiştiğinde bir iletinin çıkışını almak için izleme noktasını ayarlayabilirsiniz. Örneğin, yalnızca döngünün yinelemeleri for sırasında sayacın değerini görüntülemek istiyorsanız, True seçeneğini belirleyip ileti metin kutusuna yazabilirsinizi%2 == 0.

Screenshot showing Conditional Expression Is True.

Döngünün yinelemesi for değiştiğinde sayacın değerini yazdırmak istiyorsanız Değiştirildiğinde seçeneğini belirleyin ve ileti metin kutusuna yazıni.

Screenshot showing when Conditional Expression is Changed.

Değiştirildiğinde seçeneğinin davranışı farklı programlama dilleri için farklıdır.

  • Yerel kod için hata ayıklayıcı koşulun ilk değerlendirmesini değişiklik olarak değerlendirmez, bu nedenle ilk değerlendirmede izleme noktasına isabet etmez.
  • Yönetilen kod için hata ayıklayıcı, Değiştirildiğinde seçildikten sonra ilk değerlendirmede izleme noktasına isabet eder.

Ayrıca, kodun belirli bir bölümüne Kesme Noktası ekleyerek ve Kesme Noktası Ayarlar menüsünde yalnızca aşağıdaki kesme noktasına ulaşıldığında etkinleştir: onay kutusunu seçerek izleme noktasının etkinleştirilebileceği koşulu ayarlayabilirsiniz. Seçim listesinden herhangi bir kesme noktası seçebilirsiniz.

Screenshot showing enable when a breakpoint is hit checked.

Koşulları ayarlarken kullanabileceğiniz geçerli ifadelere daha kapsamlı bir bakış için bkz . Hata ayıklayıcıdaki ifadeler.

İsabet sayısı

İsabet sayısı koşulu, çıkışı yalnızca izleme noktasının ayarlandığı kod satırı belirtilen sayıda yürütüldükten sonra göndermenizi sağlar.

İsabet sayısı için, izleme noktasının ayarlandığı kod satırı belirli bir sayıda yürütüldüğünde bir iletinin çıkışını almayı seçebilirsiniz. Gereksinime bağlı olarak, belirtilen isabet sayısı değerine eşit veya bu değerin katı ya da değerinden büyük veya buna eşit olabilir. gereksinimlerinize en uygun seçeneği belirleyin ve alana ilgi yinelemesini temsil eden bir tamsayı değeri (örneğin, 5) yazın.

Screenshot showing Conditional Expression Hit Count.

İsabet sayısı koşulu, çıkışı yalnızca izleme noktasının ayarlandığı kod satırı belirtilen sayıda yürütüldükten sonra göndermenizi sağlar.

İsabet sayısı için, izleme noktasının ayarlandığı kod satırı belirli bir sayıda yürütüldüğünde bir iletinin çıkışını almayı seçebilirsiniz. Gereksinime bağlı olarak, belirtilen isabet sayısı değerine eşit veya bu değerin katı ya da değerinden büyük veya buna eşit olabilir. gereksinimlerinize en uygun seçeneği belirleyin ve alana ilgi yinelemesini temsil eden bir tamsayı değeri (örneğin, 5) yazın.

Screenshot showing Conditional Expression Hit Count.

İlk isabette kesme noktasını kaldırmak için, kesme noktasını kaldır onay kutusunu bir kez vurduktan sonra kaldır onay kutusunu da etkinleştirebilirsiniz.

Screenshot showing Remove breakpoint on first hit.

Filtre

Filtre koşulu için hangi cihazların, işlemlerin veya iş parçacıklarının çıkışını gösterileceğini belirtin.

Screenshot showing Conditional Expression Filter.

Filtre ifadeleri listesi:

  • MachineName = "name"
  • ProcessId = değer
  • ProcessName = "name"
  • ThreadId = değer
  • ThreadName = "name"

Dizeleri (adlar gibi) çift tırnak içine alın. Değerler tırnak işareti olmadan girilebilir. Yan tümceleri (), (AND), || (ORNOT) ! ve parantezleri kullanarak & birleştirebilirsiniz.

Filtre koşulu için hangi cihazların, işlemlerin veya iş parçacıklarının çıkışını gösterileceğini belirtin.

Screenshot showing Conditional Expression Filter.

Filtre ifadeleri listesi:

  • MachineName = "name"
  • ProcessId = değer
  • ProcessName = "name"
  • ThreadId = değer
  • ThreadName = "name"

Dizeleri (adlar gibi) çift tırnak içine alın. Değerler tırnak işareti olmadan girilebilir. Yan tümceleri (), (AND), || (ORNOT) ! ve parantezleri kullanarak & birleştirebilirsiniz.

Dikkat edilmesi gereken noktalar

İzleme noktaları hata ayıklamayı daha temiz ve daha sorunsuz bir deneyim haline getirmek için tasarlanmıştır. Bunları kullanırken dikkat etmeniz gereken bazı noktalar vardır.

Bazen bir nesnenin özelliğini veya özniteliğini incelediğinizde, nesnenin değeri değişebilir. İnceleme sırasında değer değişirse, izleme noktası özelliğinin kendisinden kaynaklanan bir hata değildir. Ancak, nesneleri incelemek için izleme noktalarının kullanılması bu yanlışlıkla yapılan değişiklikleri önlemez.

İfadelerin Eylem iletisi kutusunda değerlendirilme şekli, geliştirme için kullanmakta olduğunuz dilden farklı olabilir. Örneğin, bir dizenin çıktısını almak için veya console.log()kullanırken Debug.WriteLine() normalde kullansanız bile iletiyi tırnak içine almanız gerekmez. Ayrıca, çıkış ifadelerine yönelik küme ayracı söz dizimi ({ }), geliştirme dilinizdeki değerlerin çıkışını oluşturma kuralından da farklı olabilir. (Bununla birlikte, küme ayraçlarının ({ }) içindeki içerik yine de geliştirme dilinizin söz dizimi kullanılarak yazılmalıdır).

Canlı bir uygulamada hata ayıklamaya çalışıyorsanız ve benzer bir özellik arıyorsanız Snapshot Debugger'daki günlük noktası özelliğimize göz atın. Anlık görüntü hata ayıklayıcısı, üretim uygulamalarındaki sorunları araştırmak için kullanılan bir araçtır. Günlük noktaları, kaynak kodu değiştirmek zorunda kalmadan Çıkış Penceresi'ne ileti göndermenize de olanak sağlar ve çalışan uygulamanızı etkilemez. Daha fazla bilgi için bkz . Canlı Azure uygulamasında hata ayıklama.