Aracılığıyla paylaş


Zaman Yolculuğu Hata Ayıklama - Genel Bakış

Saat içeren Zaman yolculuğu hata ayıklama logosunun ekran görüntüsü.

Zaman yolculuğu hata ayıklama nedir?

Zaman Yolculuğu Hata Ayıklama (TTD), sürecinizi yürütürken bir iz yakalayan ve daha sonra hem ileri hem geri yürüten bir araçtır. TTD, hatayı bulana kadar sorunu tekrar canlandırmak zorunda kalmadan, hata ayıklama oturumunuzu "geri sarmanıza" izin vererek sorun ayıklamanıza yardımcı olur.

TTD, hataya yol açan koşulları daha iyi anlamak için zamana geri dönmenizi ve sorunu en iyi şekilde nasıl çözeceğinizi öğrenmek için birden çok kez yeniden yürütmenizi sağlar.

TTD'nin, genellikle nihai hata oluşumuna yol açan durum ve yürütme yolunu kaçıran kilitlenme dökümü dosyalarına kıyasla avantajları vardır.

Sorunu kendiniz çözemiyorsanız, tam olarak sizin baktığınız şeyi görebilmesi için izlemeyi bir iş arkadaşınızla paylaşabilirsiniz. Bu özellik, kaydedilen yönergeler aynı olduğundan, adres konumları ve kod yürütme farklı bilgisayarlarda farklılık gösterdiğinden işbirliğini canlı hata ayıklamadan daha kolay hale getirir. Ayrıca, iş arkadaşınızın nereden başlayacağını anlayıp öğrenmesine yardımcı olmak için belirli bir zaman noktasını paylaşabilirsiniz.

TTD verimlidir ve izleme dosyalarında kod yürütmeyi yakalarken mümkün olduğunca az ek yük eklemek için çalışır.

TTD, LINQ ile izlemeyi sorgulamak için kullanabileceğiniz bir hata ayıklayıcısı veri modeli nesneleri kümesi içerir. Örneğin, belirli bir kod modülünün ne zaman yüklendiğini bulmak veya tüm özel durumları bulmak için TTD nesnelerini kullanabilirsiniz.

WinDbg'nin, Time Travel Debugging komutu ve üç zaman çizelgesi içeren ekran görüntüsü.

Gereksinimler

Zaman Yolculuğu Hata Ayıklama, WinDbg ile entegre edilmiştir ve kesintisiz bir kayıt ve yeniden oynatma deneyimi sunar.

TTD'yi kullanmak için, hata ayıklayıcısını yükseltilmiş izinlerle çalıştırmanız gerekir. Yönetici ayrıcalıklarına sahip bir hesap kullanarak WinDbg'yi yükleyin ve hata ayıklayıcıda kayıt yaparken bu hesabı kullanın. Hata ayıklayıcıyı yükseltilmiş izinlerle çalıştırmak için Başlat menüsünde windbg simgesini seçip basılı tutun (veya sağ tıklayın), ardından Diğer > Yönetici Olarak Çalıştır'ı seçin.

Sürüm notları

TTD gelişmeye devam ediyor. En son bilgiler için bkz. Zaman yolculuğu hata ayıklama sürüm notları.

Kaydı içeren oluşturulan izleme dosyası; dosya yolları, kayıt defteri, bellek veya dosya içeriği dahil ancak bunlarla sınırlı olmamak kaydıyla ilgili kişisel bilgiler veya güvenlikle ilgili bilgiler içerebilir. Tam bilgi, kayıt sırasında hedef işlem etkinliğine bağlıdır. Kayıt dosyalarını başkalarıyla paylaşırken bunun farkında olun.

TTD.exe komut satırı kayıt yardımcı programı

WinDbg kullanıcı arabiriminde izlemeleri kaydetmeye ek olarak, izleme kaydetmek için kullanılabilecek bir TTD.exe komut satırı yardımcı programı vardır.

Yalnızca TTD komut satırı kaydedicisinin gerekli olduğu senaryolarınız olabilir: hata ayıklayıcıyı yüklemeden bir bilgisayarda kaydetme, gelişmiş kayıt senaryoları, test otomasyonu vb. Bu senaryolarda bir URL aracılığıyla yalnızca TTD komut satırı kaydedicisini yükleyebilirsiniz. Daha fazla bilgi için bakınız Time Travel Debugging - TTD.exe komut satırı yardımcı programı.

Hata Ayıklama Araçları Karşılaştırması

Bu tablo, kullanılabilir farklı hata ayıklama çözümlerinin artılarını ve dezavantajlarını özetler.

Yaklaşım Pros Cons
Canlı hata ayıklama Etkileşimli bir deneyim, yürütme akışını gözlemler, hedef durumu değiştirebilir, tanıdık ortamda tanıdık bir araç. Kullanıcı deneyimini kesintiye uğratır, sorunu tekrar tekrar yeniden oluşturmak için çaba gerektirebilir, güvenliği etkileyebilir, üretim sistemlerinde her zaman bir seçenek değildir. Repro'nun nedeni belirlemek için hata noktasından geriye doğru çalışması zor.
Dumps Önceden kodlama gerektirmeyen, düşük müdahaleli, tetikleyicilere dayalı. Ardışık anlık görüntü veya canlı dökümler basit bir "zaman içinde" görünümü sağlar. Ek yük, kullanılmıyorsa temelde sıfırdır.
Telemetri ve günlükler Hafif, genellikle iş senaryolarına / kullanıcı eylemlerine bağlı, makine öğrenmesi dostu. Beklenmeyen kod yollarında (telemetri olmadan) sorunlar ortaya çıkar. Statik olarak koda derlenmiş veri derinliği eksikliği.
Zaman Yolculuğu Hata Ayıklama (TTD) Karmaşık hatalarda harikadır, önceden kodlama yapılmaz, çevrimdışı tekrarlanabilir hata ayıklama, analiz dostu, her şeyi yakalar. Kayıt zamanında büyük ek yük. Gereken daha fazla veri toplayabilir. Veri dosyaları genişleyebilir.

Video eğitimi

TTD hakkında daha fazla bilgi edinmek için bu videolara bakın.

Defrag Tools 185 - Ivette ve JamesP, TTD'nin temellerini ele alıp WinDbg'deki bazı özelliklerin tanıtımını yapın

Defrag Tools 186 - Jordi ve JCAB, WinDbg'de TTD'nin harika özelliklerini gösteriyor

CppCon (YouTube) - Jordi, Ken ve JamesM, CppCon 2017'de WinDbg'de TTD'yi sundu

İz Dosyasının Temel Kavramları

Dosya boyutunu izleme

İzleme dosyası büyüyebilir. Yeterli boş alan olduğundan emin olmanız gerekir. Bir programı birkaç dakika bile kaydederseniz izleme dosyaları hızla birkaç gigabayt olacak şekilde büyüyebilir. TTD, uzun süre çalışan karmaşık senaryolara izin vermek üzere izleme dosyaları için en büyük boyutu ayarlamaz. Sorunu hızla yeniden oluşturmak, izleme dosyası boyutunu mümkün olduğunca küçük tutar.

dosyaları izleme ve dizin oluşturma

İzleme dosyası (.run), kayıt sırasında kod yürütmeyi depolar.

Kaydı durdurduğunuzda, sistem izleme bilgilerine erişimi iyileştirmek için bir dizin dosyası (.idx) oluşturur. WinDbg ayrıca izleme dosyalarını açtığında otomatik olarak dizin dosyaları oluşturur.

Dizin dosyaları, genellikle izleme dosyasının iki katı kadar büyük olabilir.

komutunu kullanarak !tt.index izleme dosyasından dizin dosyasını yeniden oluşturabilirsiniz.

0:000> !tt.index
Successfully created the index in 10ms.

Kayıt hataları ve diğer kayıt çıktıları bir WinDbg günlük dosyasına gider.

Tüm çıkış dosyalarını yapılandırdığınız bir konumda depolarsınız. Varsayılan konum kullanıcının belge klasöründedir. Örneğin, User1 için TTD dosyaları burada depolanır:

C:\Users\User1\Documents

İzleme dosyalarıyla çalışma hakkında daha fazla bilgi için Zaman Yolculuğu Hata Ayıklama - İzleme Dosyalarıyla Çalışma bölümüne bakın.

Dikkate almak için gerekenler

Virüsten koruma uyumsuzlukları

TTD'nin bunları kaydetmek için işlemlere nasıl bağlandığı nedeniyle uyumsuzluklarla karşılaşabilirsiniz. Genellikle, virüsten koruma veya sistem bellek çağrılarını izlemeye ve gölgelendirmeye çalışan diğer sistem yazılımlarında sorunlar ortaya çıkar. Kayıtla ilgili yetersiz izin iletisi gibi sorunlarla karşılaşırsanız virüsten koruma yazılımlarını geçici olarak devre dışı bırakmayı deneyin.

Bellek erişimini engellemeye çalışan diğer yardımcı programlar da sorunlu olabilir. Örneğin, Microsoft Gelişmiş Risk Azaltma Deneyimi Araç Seti.

TTD ile çakişen bir başka ortam örneği de Electron uygulama çerçevesidir. Bu durumda izleme kaydedilebilir, fakat kaydedilen işlemin kilitlenmesi veya çökmesi de mümkündür.

Yalnızca kullanıcı modu

TTD şu anda yalnızca kullanıcı modu işlemini desteklediğinden çekirdek modu işlemini izleyemezsiniz.

Salt okunur kayıttan yürütme

Zamanda geri gidebilirsiniz, ancak geçmişi değiştiremezsiniz. Bellek okuma komutlarını kullanabilirsiniz, ancak bellekte değişiklik veya yazma komutlarını kullanamazsınız.

Sistem korumalı işlemler

Korumalı İşlem Işığı (PPL) işlemi gibi bazı Windows sistem korumalı işlemler korunur. TTD, kod yürütmenin kaydedilmesine izin vermek için korumalı işleme kendisini ekleyemez.

Kaydın performans üzerindeki etkisi

Bir uygulama veya işlemin kaydedilmesi, bilgisayarın performansını etkiler. Gerçek performans yükü, kayıt sırasında yürütülen kodun miktarına ve türüne göre değişir. Tipik kayıt senaryolarında performansta yaklaşık 10-20 kat düşüş bekleyebilirsiniz. Bazen kullanıcı arabiriminde belirgin bir yavaşlama olmaz. Ancak Dosya Aç iletişim kutusu gibi yoğun kaynak kullanımlı işlemler için kaydın etkisini görürsünüz.

dosya hatalarını izleme

İzleme dosyası hataları oluşabilir. Daha fazla bilgi için bkz. Zaman Yolculuğu Hata Ayıklama - Sorun Giderme.

Zaman Yolculuğu ile Hata Ayıklamanın Gelişmiş Özellikleri

Zaman çizelgeleri

Zaman çizelgeleri, yürütme sırasında gerçekleşen olayların görsel bir gösterimidir. Bu olaylar, durak noktaları, bellek okuma/yazma işlemleri, işlev çağrıları, dönüşler ve özel durumlar olabilir. Zaman çizelgeleri hakkında daha fazla bilgi için bkz. WinDbg - Zaman Çizelgeleri.

Hata ayıklayıcısı veri modeli desteği

  • Yerleşik veri modeli desteği - TTD, veri modeli desteği içerir. Uygulama hatalarını analiz etmek için LINQ sorgularını kullanmak güçlü bir araç olabilir. WinDbg'deki veri modeli penceresini kullanarak, dx ve dx -g'in genişletilebilir ve göz atılabilir bir sürümüyle çalışabilir ve NatVis, JavaScript ve LINQ sorgularını kullanarak tablolar oluşturabilirsiniz.

Hata ayıklayıcısı veri modeli hakkında genel bilgi için bkz. WinDbg - Veri modeli. TTD hata ayıklayıcısı nesne modeliyle çalışma hakkında bilgi için bkz. Zaman Yolculuğu Hata Ayıklama - Zaman Yolculuğu Hata Ayıklama nesnelerine giriş.

Betik oluşturma desteği

JavaScript ve NatVis ile çalışma hakkında genel bilgi için bakınız WinDbg - Betik Yazımı.

TTD.exe Komut satırı yardımcı programı

İzlemeleri kaydetmek için TTD.exe komut satırı yardımcı programı kullanılabilir. Daha fazla bilgi için bakınız Time Travel Debugging - TTD.exe komut satırı yardımcı programı.

Yönetilen kod TTD desteği

WinDbg'de TTD kullanarak yönetilen kodda hata ayıklamak için 64 bit modunda çalışan SOS hata ayıklama uzantısını (sos.dll) kullanabilirsiniz. Daha fazla bilgi için bkz. Windows Hata Ayıklayıcısı Kullanarak Yönetilen Kodda Hata Ayıklama.

TTD kullanmaya başlama

Buradan başlayın

TTD'yi yeni kullanıyorsanız şu öğrenme yolunu izleyin:

  1. Bir iz kaydedin - İlk yürütme izlemenizi kaydedin
  2. İz kaydını yeniden yürütme - Kaydınızda gezinme ve analiz etme
  3. Örnek Uygulama Kılavuzu - Adım Adım Hata Ayıklama Örneği

Yardım lazım mı?

Gelişmiş özellikler