Visual Studio'da (Visual Studio Enterprise) IntelliTrace geri adım adım kullanarak önceki uygulama durumlarını inceleme

IntelliTrace geri adım adım her kesme noktası ve hata ayıklayıcı adımı olayında uygulamanızın anlık görüntüsünü otomatik olarak alır. Kaydedilen anlık görüntüler önceki kesme noktalarına veya adımlara geri dönmenizi ve uygulamanın durumunu geçmişte olduğu gibi görüntülemenizi sağlar. IntelliTrace geri adımı, önceki uygulama durumunu görmek ancak hata ayıklamayı yeniden başlatmak veya istenen uygulama durumunu yeniden oluşturmak istemediğinizde size zaman kazandırabilir.

IntelliTrace step-back, Visual Studio Enterprise 2017 sürüm 15.5 ve sonraki sürümlerden itibaren kullanılabilir ve Windows 11 veya Windows 10 Yıldönümü Güncelleştirmesi veya önceki sürümleri gerektirir. Özellik şu anda ASP.NET, WinForms, WPF, yönetilen konsol uygulamaları ve yönetilen sınıf kitaplıklarında hata ayıklama için desteklenmektedir. Visual Studio 2017 Enterprise sürüm 15.7'den başlayarak, özellik ASP.NET Core ve .NET Core için de desteklenir. Visual Studio 2017 Enterprise sürüm 15.9 Önizleme 2'den başlayarak, bu özellik Windows'a yönelik yerel uygulamalar için de desteklenir. UWP uygulamalarında hata ayıklama şu anda desteklenmiyor.

Bu öğreticide şunları yapacaksınız:

  • IntelliTrace olaylarını ve anlık görüntülerini etkinleştirme
  • Geri adım ve ileri adım komutlarını kullanarak etkinliklerde gezinme
  • Olay anlık görüntülerini görüntüleme

IntelliTrace olaylarını ve anlık görüntüler modunu etkinleştirme

  1. Projenizi Visual Studio Enterprise'da açın.

  2. Araçlar>Seçenekleri>IntelliTrace ayarlarını açın ve IntelliTrace olayları ve anlık görüntüleri seçeneğini belirleyin.

    Visual Studio 2017 Enterprise sürüm 15.9 Önizleme 2'den başlayarak, bu seçenek IntelliTrace anlık görüntüleridir (yönetilen ve yerel).

    Enable IntelliTrace Events and Snapshots mode

  3. Özel durumlarda anlık görüntüleri görüntüleme seçeneklerini yapılandırmak istiyorsanız, Seçenekler iletişim kutusundan IntelliTrace>Gelişmiş'iseçin.

    Bu seçenekler Visual Studio 2017 Enterprise sürüm 15.7'den itibaren kullanılabilir.

    Configure behavior for snapshots on exceptions

    Olayları ve anlık görüntüleri etkinleştirdiğinizde, özel durumlarda anlık görüntü almak da varsayılan olarak etkinleştirilir. Özel durum olaylarında anlık görüntü topla'nın seçimini kaldırarak özel durumlarda anlık görüntüleri devre dışı bırakabilirsiniz. Bu özellik etkinleştirildiğinde, işlenmeyen özel durumlar için anlık görüntüler alınır. İşlenen özel durumlar için anlık görüntüler yalnızca özel durum oluşturulursa ve daha önce oluşan bir özel durumun yeniden indirilmesi değilse alınır. Açılan listeden bir değer seçerek özel durumlarda en fazla anlık görüntü sayısını ayarlayabilirsiniz. Maksimum değer, uygulamanızın kesme moduna girdiği her zaman (örneğin, uygulamanızın kesme noktasına çarpması) için geçerlidir.

    Dekont

    Anlık görüntüler yalnızca IntelliTrace'in kaydettiği özel durum olayları için alınır. Yönetilen kod için, Araçlar>Seçenekleri>IntelliTrace Olayları'nı seçerek IntelliTrace kayıtlarının hangi olayları olduğunu belirtebilirsiniz.

  4. Projenizde, bir veya daha fazla kesme noktası ayarlayın ve hata ayıklamayı başlatın (F5 tuşuna basın) veya kodunuzda (F10 veya F11) adım adım ilerleyerek hata ayıklamaya başlayın.

    IntelliTrace her hata ayıklayıcı adımı, kesme noktası olayı ve işlenmeyen özel durum olayı üzerinde uygulamanın işleminin anlık görüntüsünü alır. Bu olaylar, Diğer IntelliTrace olaylarıyla birlikte Tanılama Araçları penceresindeki Olaylar sekmesine kaydedilir. Bu pencereyi açmak için Windows>Tanılama Araçlarını Göster hatalarını ayıkla'yı>seçin.

    Anlık görüntülerin kullanılabildiği olayların yanında bir kamera simgesi görüntülenir.

    Events tab with snapshots

    Performans nedenleriyle, hızlı bir şekilde adımladığınızda anlık görüntüler alınmaz. Adımın yanında kamera simgesi görünmüyorsa daha yavaş adımlamayı deneyin.

  1. Hata Ayıklama araç çubuğundaki Geri Adım (Alt + [) ve İleri Adım (Alt + ]) düğmelerini kullanarak olaylar arasında gezinin.

    Bu düğmeler Tanılama Araçları penceresinin Olaylar sekmesinde görüntülenen olaylara gider. Bir olaya geri veya ileri gitmek, seçilen olayda geçmiş hata ayıklamayı otomatik olarak etkinleştirir.

    Step Backward and Forward buttons

    Geri adım attığınızda veya ilerlediğinizde, Visual Studio geçmiş hata ayıklama moduna girer. Bu modda, hata ayıklayıcının bağlamı seçilen olayın kaydedilildiği zamana geçer. Visual Studio ayrıca işaretçiyi kaynak penceredeki karşılık gelen kod satırına taşır.

    Bu görünümden Çağrı Yığını, Yerel Ayarlar, Otomatikler ve İzleme pencerelerindeki değerleri inceleyebilirsiniz. Ayrıca, Değişkenlerin üzerine gelerek Verileri İpuçları görüntüleyebilir ve Anında penceresinde ifade değerlendirmesi gerçekleştirebilirsiniz. Gördüğünüz veriler, uygulamanın bu noktada gerçekleştirilir işleminin anlık görüntüsünden alınır.

    Bu nedenle, örneğin bir kesme noktasına bastıysanız ve Bir Adım (F10) aldıysanız, Geri Adım düğmesi Visual Studio'yu kesme noktasına karşılık gelen kod satırında geçmiş moduna geçirir.

    Activating historical mode on an event with a snapshot

  2. Canlı yürütmeye dönmek için Devam 'ı (F5) seçin veya bilgi çubuğunda Canlı Hata Ayıklamaya Dön bağlantısını seçin.

  3. Bir anlık görüntüyü Olaylar sekmesinden de görüntüleyebilirsiniz. Anlık görüntü içeren bir olay seçin ve Geçmiş Hata Ayıklamayı Etkinleştir'i seçin.

    Activate Historical Debugging on an event

    Sonraki Deyimi Ayarla komutundan farklı olarak, bir anlık görüntüyü görüntülemek kodunuzu yeniden çalıştırmaz; size uygulamanın geçmişte oluşan belirli bir noktadaki durumunun statik bir görünümünü sağlar.

    Overview of IntelliTrace step-back

    Visual Studio'da değişkenleri inceleme hakkında daha fazla bilgi edinmek için bkz. Hata ayıklayıcıya ilk bakış

Sık Sorulan Sorular

IntelliTrace'in geri adım atarak yalnızca IntelliTrace olayları modundan farkı nedir?

Yalnızca olaylar modunda IntelliTrace, hata ayıklayıcı adımlarında ve kesme noktalarında geçmiş hata ayıklamayı etkinleştirmenize olanak sağlar. Ancak, IntelliTrace yalnızca pencereler açıksa Yereller ve Otomatikler pencerelerindeki verileri yakalar ve yalnızca genişletilmiş ve görünümde olan verileri yakalar. Yalnızca olaylar modunda genellikle değişkenlerin ve karmaşık nesnelerin tam görünümüne sahip olmazsınız. Ayrıca, İzleme penceresinde ifade değerlendirmesi ve verileri görüntüleme desteklenmez.

Olaylar ve anlık görüntüler modunda IntelliTrace, karmaşık nesneler de dahil olmak üzere uygulama işleminin tüm anlık görüntüsünü yakalar. Bir kod satırında, kesme noktasında durdurulmuş gibi aynı bilgileri görebilirsiniz (ve bilgileri daha önce genişletip genişletmediğiniz önemli değildir). Bir anlık görüntü görüntülenirken ifade değerlendirmesi de desteklenir.  

Bu özelliğin performans etkisi nedir? 

Genel adımlama performansı üzerindeki etkisi, uygulamanıza bağlıdır. Anlık görüntü alma yükü yaklaşık 30 ms'dir. Anlık görüntü alındığında uygulamanın işlemi çatallanır ve çatallanmış kopya askıya alınır. Bir anlık görüntüyü görüntülediğinizde, Visual Studio işlemin çatallanmış kopyasına eklenir. Visual Studio, her anlık görüntü için yalnızca sayfa tablosunu kopyalar ve sayfaları kopyalayıp yazacak şekilde ayarlar. Yığındaki nesneler ilişkili anlık görüntülerle hata ayıklayıcı adımları arasında değişirse, ilgili sayfa tablosu kopyalanır ve en düşük bellek maliyeti elde edilir. Visual Studio anlık görüntü almak için yeterli bellek olmadığını algılarsa, bu işlem bir tane almaz.

Bilinen Sorunlar

  • Windows'un Windows 10 Fall Creators Update'ten (RS3) daha eski sürümlerinde IntelliTrace olaylarını ve anlık görüntü modunu kullanıyorsanız ve uygulamanın hata ayıklama platformu hedefi x86 olarak ayarlandıysa IntelliTrace anlık görüntü almaz.

    Geçici çözümler:

    • Windows 10 Yıldönümü Güncelleştirmesi'nde (RS1) iseniz ve sürümünüz 10.0.14393.2273'ten eskiyse KB4103720 yükleyin.
    • Windows 10 Creators Update(RS2) kullanıyorsanız ve sürümünüz 10.0.15063.1112'den eskiyse KB4103722 yükleyin.
    • Windows 11 veya Windows 10 Fall Creators Update 'i (RS3) yükleyin veya yükseltin.
    • Alternatif olarak:
      1. Visual Studio yükleyicisinden masaüstü için VC++ 2015.3 v140 araç seti (x86, x64) bileşenini yükleyin.

      2. Hedef uygulamayı derleyin.

      3. Komut satırından aracı kullanarak editbin hedef yürütülebilir dosyanın bayrağını Largeaddressaware ayarlayın. Örneğin, şu komutu kullanabilirsiniz (yolu güncelleştirdikten sonra): "C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\VC\Tools\MSVC\14.12.25718\bin\Hostx86\x86\editbin.exe" /Largeaddressaware "C:\Path\To\Application\app.exe".

      4. Hata ayıklamayı başlatmak için F5 tuşuna basın. Artık hata ayıklayıcı adımlarında ve kesme noktalarında anlık görüntüler alınıyor.

        Dekont

        Yürütülebilir Largeaddressaware dosya değişikliklerle her yeniden oluşturulduğunda bayrağı ayarlanmalıdır.

  • Kalıcı belleğe eşlenmiş bir dosya kullanan bir uygulamada uygulama işleminin anlık görüntüsü alındığında, anlık görüntüyle yapılan işlem bellekle eşlenen dosyada (üst işlem kilidini yayımladıktan sonra bile) özel bir kilit tutar. Diğer işlemler bellekle eşlenen dosyaya okuma yapabilir ancak yazamaz.

    Geçici çözüm:

    • Hata ayıklama oturumunu sonlandırarak tüm anlık görüntüleri temizleyin.
  • İşlemi çok fazla sayıda DLL yükleyen bir uygulama gibi çok sayıda benzersiz bellek bölgesine sahip bir uygulamada hata ayıklanırken, anlık görüntüler etkinken performansın uygulanması etkilenebilir. Bu sorun Windows'un gelecekteki bir sürümünde giderilecektir. Bu sorunla karşılaşıyorsanız adresinden bize stepback@microsoft.comulaşın.

  • IntelliTrace Save IntelliTrace > oturumuyla> bir dosyayı olaylar ve anlık görüntüler modunda kaydederken, anlık görüntülerden yakalanan diğer veriler .itrace dosyasında kullanılamaz. Kesme noktası ve adım olaylarında, dosyayı yalnızca IntelliTrace olayları modunda kaydetmişsiniz gibi aynı bilgileri görürsünüz.

Sonraki adımlar

Bu öğreticide IntelliTrace adım adım kullanmayı öğrendiniz. Diğer IntelliTrace özellikleri hakkında daha fazla bilgi edinmek isteyebilirsiniz.