Aracılığıyla paylaş


Çok işlemcili söz dizimi

KD ve çekirdek modu WinDbg birden çok işlemci hata ayıklamasını destekler. Bu tür bir hata ayıklamayı herhangi bir çok işlemcili platformda gerçekleştirebilirsiniz.

İşlemciler sıfırdan n'ye kadar numaralandırılır.

Geçerli işlemci 0 işlemci ise (şu anda hata ayıklayıcının etkin olmasını sağlayan işlemciyse), diğer geçerli olmayan işlemcileri (bir ile n arası işlemciler) inceleyebilirsiniz. Ancak, güncel olmayan işlemcilerde hiçbir şeyi değiştiremezsiniz. Yalnızca durumlarını görüntüleyebilirsiniz.

İşlemci Seçme

Geçerli işlemcinin işlemci numaralarını görüntülemek için .echocpunum (CPU Numarasını Göster) komutunu kullanabilirsiniz. Bu komutun çıktısı, çekirdek hata ayıklama istemi aracılığıyla birden çok işlemci sisteminde çalışmakta olduğunuzu hemen anlayabilmenizi sağlar.

Aşağıdaki örnekte 0:kd> isteminin önünde, bilgisayardaki ilk işlemcide hata ayıklama yaptığınız gösterilir.

0: kd>

Aşağıdaki örnekte gösterildiği gibi işlemciler arasında geçiş yapmak için ~s (Geçerli İşlemciyi Değiştir) komutunu kullanın.

0: kd> ~1s
1: kd>

Şimdi bilgisayardaki ikinci işlemcide hata ayıklacaksınız.

Bir kesmeyle karşılaşırsanız ve yığın izlemesini anlayamazsanız, çok işlemcili bir sistemde işlemcileri değiştirmeniz gerekebilir. Kesinti başka bir işlemcide oluşmuş olabilir.

Diğer Komutlarda İşlemci belirtme

Birkaç komut öncesinde bir işlemci numarası ekleyebilirsiniz. Bu sayı, ~S komutu dışında bir tilde (~) ile başlamaz.

Not Kullanıcı modunda hata ayıklamada, iş parçacıklarını belirtmek için tilde kullanılır. Bu sözdizimi hakkında daha fazla bilgi için bkz. Thread Sözdizimi.

İşlemci kimliklerinin açıkça belirtilmesi gerekmez. Bunun yerine, işlemci kimliğine karşılık gelen bir tamsayıya çözümleyen sayısal bir ifade kullanabilirsiniz. İfadenin işlemci olarak yorumlanması gerektiğini belirtmek için aşağıdaki söz dizimini kullanın.

||[Expression]

Bu söz diziminde köşeli ayraçlar gereklidir ve İfade , işlemci kimliğine karşılık gelen bir tamsayıya çözümleyen tüm sayısal ifadeleri ifade eder.

Aşağıdaki örnekte işlemci, kullanıcı tanımlı sahte yazmaç değerine bağlı olarak değişir.

||[@$t0]

Örnekleri

Aşağıdaki örnek, iki işlemciden bir yığın izlemesi görüntülemek için k (Yığın Geri İzlemesini Görüntüle) komutunu kullanır.

1: kd> 2k 

Aşağıdaki örnek , r (Registers) komutunu kullanarak üç işlemcinin eax yazmaçlarını görüntüler.

1: kd> 3r eax 

Ancak, geçerli işlemci dışında bir işlemcinin durumunu değiştiremediğiniz için aşağıdaki komut bir söz dizimi hatası verir.

1: kd> 3r eax=808080 

Kesme nokta -ları

Çekirdek hata ayıklama sırasında bp, bu, bm (Kesme Noktasını Ayarla) ve ba (Erişimde Kesme) komutları birden çok işlemcili bilgisayarın tüm işlemcileri için geçerlidir.

Örneğin, geçerli işlemci üç ise, SomeAddress'te bir kesme noktası koymak için aşağıdaki komutu girebilirsiniz.

1: kd> bp SomeAddress 

Ardından, bu adreste yürütülen herhangi bir işlemci (yalnızca birinci işlemci değil) kesme noktası tuzağına neden olur.

İşlemci Bilgilerini Görüntüleme

Hedef bilgisayarda her işlemcinin durumunu görüntülemek için !running uzantısını kullanabilirsiniz. Her işlemci için !running, işlem denetim bloğundan (PRCB) geçerli ve sonraki iş parçacığı alanlarının yanı sıra, 16 yerleşik kuyruğa alınmış spinlock'un durumu ve bir yığın izini de görüntüleyebilir.

İşlemcilerle ilgili bilgileri görüntülemek için !cpuinfo ve !cpuid uzantılarını kullanabilirsiniz.