Aracılığıyla paylaş


Birden Çok Hedef İçin Hata Ayıklama

Aynı anda birden çok döküm dosyasının veya canlı kullanıcı modu uygulamalarının hatalarını ayıklayabilirsiniz. Her hedef bir veya daha fazla işlem içerir ve her işlem bir veya daha fazla iş parçacığı içerir.

Bu hedefler de sistemler halinde gruplandırılır. Sistemler, kolay tanımlama ve işleme için birlikte gruplandırılmış hedef kümeleridir. Sistemler aşağıdaki gibi tanımlanır:

  • Her çekirdek modu veya kullanıcı modu döküm dosyası ayrı bir sistemdir.

  • Farklı bilgisayarlardaki canlı kullanıcı modu uygulamalarında hata ayıklarken (Dbgsrv gibi bir işlem sunucusu kullanarak), her uygulama ayrı bir sistemdir.

  • Yerel bilgisayarda canlı kullanıcı modu uygulamalarında hata ayıklarken, uygulamalar tek bir sistemde birleştirilir.

Geçerli veya etkin sistem, şu anda hata ayıkladığınız sistemdir.

Birden Çok Hedef Alma

İlk hedef her zamanki gibi elde edilir.

.attach (İşleme Ekle) veya .create (İşlem Oluştur) komutunu ve ardından g (Go) komutunu kullanarak ek canlı kullanıcı modu uygulamalarında hata ayıklayabilirsiniz.

.opendump (Döküm Dosyasını Aç) komutunu ve ardından g (Go) komutunu kullanarak ek döküm dosyalarında hata ayıklayabilirsiniz. Hata ayıklayıcı başlatıldığında birden çok döküm dosyasını da açabilirsiniz. Birden çok döküm dosyası açmak için, komuta her biri farklı bir dosya adı ile takip edilen birden çok -z anahtarı ekleyin.

İşlemler farklı sistemlerde olsa bile önceki komutları kullanabilirsiniz. Her sistemde bir işlem sunucusu başlatmanız ve ardından uygun işlem sunucusunu tanımlamak için .attach veya .create ile -premote parametresini kullanmanız gerekir. .attach veya .create komutunu -premote parametresini belirtmeden yeniden kullanırsanız, hata ayıklayıcı geçerli sistemde bir işlem ekler veya oluşturur.

Sistemleri ve Hedefleri Düzenleme

Hata ayıklama başladığında, geçerli sistem hata ayıklayıcının en son eklendiği sistemdir. Bir özel durum oluşursa, geçerli sistem bu özel durumun oluştuğu sisteme geçer.

Bir hedefi kapatmak ve diğer hedeflerde hata ayıklamaya devam etmek için .kill (Sonlandırma İşlemi) komutunu kullanın. .detach (İşlemden Ayır) komutunu veya WinDbg'in Hata Ayıklama | Hedefi Ayır menü öğesini kullanabilirsiniz. Bu komutlar hata ayıklayıcıyı hedeften ayırır ancak hedefi çalışır durumda bırakır.

Birden çok sistemde hata ayıklamayı denetlemek için aşağıdaki yöntemleri kullanabilirsiniz:

Geçerli sistemi seçmek için bu komutları kullanarak ve geçerli işlemi ve iş parçacığını seçmek için standart komutları kullanarak, belleği görüntüleyen ve kaydeden komutların bağlamını belirleyebilirsiniz.

Ancak, bu işlemlerin yürütülmesini ayıramazsınız. g (Go) komutu her zaman tüm hedeflerin birlikte yürütülmesine neden olur.

Not Canlı hedeflerin ve döküm hedeflerinin hatalarını birlikte ayıkladığınızda, komutlar her hata ayıklama türü için farklı davrandığı için bazı komplikasyonlar vardır. Örneğin, geçerli sistem bir döküm dosyası olduğunda g (Go) komutunu kullanırsanız, hata ayıklayıcı yürütülmeye başlar, ancak kesme komutu döküm dosyası hata ayıklaması için geçerli olarak tanınmadığından hata ayıklayıcıya geri giremezsiniz.

Örnek

Aynı anda üç döküm dosyasıyla çalışmak için -z seçeneğini kullanarak WinDbg başlatıldığında bunları yükleyebilirsiniz.

windbg -z c:\notepad.dmp -z c:\paint.dmp -z c:\calc.dmp

Daha fazla bilgi için bkz. WinDbg Command-Line Seçenekleri. Hata ayıklayıcıya ek döküm dosyaları yüklemek için .opendump ve g (Go) komutlarını da kullanabilirsiniz.

|| (Sistem Durumu) komutuyla üç sistem de mevcut olduğundan emin olun.

||0:0:007> ||
.  0 User mini dump: c:\notepad.dmp
   1 User mini dump: C:\paint.dmp
   2 User mini dump: c:\calc.dmp

Döküm dosyalarının yüklenmesini tamamlamak için g (Go) komutunu kullanın.

||0:0:007> g

************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       srv*
Symbol search path is: srv*
Executable search path is: 
Windows 10 Version 15063 MP (4 procs) Free x64
Product: WinNt, suite: SingleUserTS
15063.0.amd64fre.rs2_release.170317-1834
Machine Name:
Debug session time: Fri Jun  9 15:52:04.000 2017 (UTC - 7:00)
System Uptime: not available
Process Uptime: 0 days 0:03:44.000
...............................................................
This dump file has a breakpoint exception stored in it.
The stored exception information can be accessed via .ecxr.
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc              int     3

Ardından, geçerli sistemi sistem 1 olarak ayarlamak ve geçerli sistemi görüntülemek için ||s (Geçerli Sistemi Ayarla) komutunu kullanın.

||1:1:017> ||1s
||1:1:017> ||
   0 User mini dump: c:\notepad.dmp
.  1 User mini dump: c:\paint.dmp
   2 User mini dump: c:\calc.dmp

Geçerli döküm dosyasına bakmayı bitirdiğinizde .detach komutunu kullanabilirsiniz.

||1:1:017> .detach
ntdll!DbgBreakPoint:
00007ff8`aada8d70 cc              int     3
Detached
||0:0:007> ||
.  0 User mini dump: c:\notepad.dmp
   2 User mini dump: c:\calc.dmp

Kaynaklar

Hata ayıklama hakkında ek bilgi için aşağıdaki kaynaklara bakın.

Kitaplar

  • Mario Hewardt ve Daniel Pravat'ın Gelişmiş Windows Hata Ayıklaması

  • Windows'un İçinde Hata Ayıklama: Tarik Soulami Tarafından Windows'ta Hata Ayıklama ve İzleme Stratejileri için Pratik Bir Kılavuz

  • Windows Internals by Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich and David A. Solomon

Video

Defrag Araçları Gösterisi WinDbg Bölümleri 13-29: </shows/defrag-tools/>