Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Hata ayıklayıcının isteği üzerine işlemci tarafından denetlenen kesme noktaları, işlemci kesme noktaları veya veri kesme noktaları olarak bilinir. Hata ayıklayıcısı tarafından doğrudan denetlenen kesme noktaları yazılım kesme noktaları olarak bilinir.
NotVeri kesme noktası terimi genellikle işlemci kesme noktası için eş anlamlı olarak kullanılsa da, bu terim yanıltıcı olabilir. İki temel kesme noktası türü vardır: işlemci tarafından denetlenen işlemci kesme noktaları ve hata ayıklayıcı tarafından denetlenen yazılım kesme noktaları. İşlemci kesme noktaları genellikle program verilerinde ayarlanır . Bu nedenle "veri kesme noktaları" olarak adlandırılırlar, ancak yürütülebilir kodda da ayarlanabilirler. Yazılım kesme noktaları genellikle yürütülebilir kodda ayarlanır, ancak program verilerinde de ayarlanabilir. Ne yazık ki, yürütülebilir kodda ayarlanmış olsalar bile işlemci kesme noktalarını "veri kesme noktaları" olarak adlandırmak hata ayıklama literatüründe yaygındır.
İşlemci Kesme Noktaları
Belirli bir bellek konumuna erişildiğinde işlemci kesme noktası tetikleniyor. Bunu tetikleyen bellek erişimi türüne karşılık gelen dört tür işlemci kesme noktası vardır:
| Kesme noktası türü | Eylem |
|---|---|
| e (yürüt) | İşlemci belirtilen adresten bir yönerge aldığında tetiklenmiş. |
| r (okuma/yazma) | İşlemci belirtilen adreste bellek okuduğunda veya yazdığında tetiklenmiş. |
| w (yazma) | İşlemci belirtilen adrese bellek yazdığında tetiklenmiş. |
| i (girdi/çıktı) | Belirtilen Adreste G/Ç bağlantı noktasına erişildiğinde tetiklendi. |
Her işlemci kesme noktasının kendisiyle ilişkilendirilmiş bir boyutu vardır. Örneğin, w (yazma) işlemci kesme noktası dört bayt boyutunda 0x70001008 adreste ayarlanabilir. Bu, adres bloğunu 0x70001008 ile 0x7000100B (dahil) arasında izler. Bu bellek bloğuna yazılırsa kesme noktası tetiklenir.
İşlemci, belirtilen bölgeyle çakışan ancak aynı olmayan bir bellek bölgesinde bir işlem gerçekleştirebilir. Verilen örnekte, 0x70001000'den 0x7000100F'e kadar olan aralığı içeren tek bir yazma işlemi veya yalnızca 0x70001009 baytını içeren bir yazma işlemi, çakışan bir işlem olacaktır. Böyle bir durumda kesme noktasının tetiklenip tetiklenmeyeceği işlemciye bağlıdır. Bu durumun belirli bir işlemcide nasıl işleneceğinin ayrıntıları için işlemci mimarisi el kitabına başvurun ve "hata ayıklama kaydı" veya "hata ayıklama denetimi kaydı" araması yapın. Örnek olarak belirli bir işlemci türüne bakacak olursak, bir x86 işlemcide, erişilen aralığın kesme noktası aralığıyla ne zaman çakıştığını her seferinde bir okuma veya yazma kesme noktası tetikler.
Benzer şekilde, adres 0x00401003'e bir e (yürütme) kesme noktası ayarlanırsa ve ardından 0x00401002 ve 0x00401003 adreslerini kapsayan iki baytlık yönerge yürütülürse, sonuç işlemciye bağlıdır. Ayrıntılar için işlemci mimarisi kılavuzuna bakın.
İşlemci, kullanıcı modu hata ayıklayıcısı tarafından ayarlanan kesme noktalarını ve çekirdek modu hata ayıklayıcısı tarafından ayarlanan kesme noktalarını birbirinden ayırır. Kullanıcı modu işlemci kesme noktası, çekirdek modu işlemlerini etkilemez. Çekirdek modu işlemci kesme noktası, kullanıcı modu kodunun hata ayıklama kayıt durumunu kullanıp kullanmadığına ve eklenmiş bir kullanıcı modu hata ayıklayıcısı olup olmadığına bağlı olarak kullanıcı modu işlemini etkileyebilir veya etkilemeyebilir.
Geçerli işlemin mevcut veri kesme noktalarını farklı bir yazmaç bağlamı için uygulamak için .apply_dbp (Veri Kesme Noktasını Bağlama Uygula) komutunu kullanın.
Çok işlemcili bir bilgisayarda, her işlemci kesme noktası tüm işlemciler için geçerlidir. Örneğin, geçerli işlemci 3 ise ve MyAddress'e kesme noktası koymak için komutunu ba e1 MyAddress kullanırsanız, bu adreste yürütülen tüm işlemciler (yalnızca işlemci 3 değil) kesme noktasını tetikler. Bu, yazılım kesme noktaları için de geçerli olur.
Yazılım Kesme Noktaları
yazılım kesme noktaları, işlemci kesme noktalarından farklı olarak hata ayıklayıcı tarafından denetlenmektedir. Hata ayıklayıcı bir konumda bir yazılım kesme noktası yerleştirdiğinde, bu bellek konumunun içeriğini geçici olarak bir kesme komutuyla değiştirir. Hata ayıklayıcısı bu konumun özgün içeriğini anımsar, böylece bu bellek hata ayıklayıcıda görüntülenirse hata ayıklayıcı kesme yönergesini değil bu bellek konumunun özgün içeriğini gösterir. Hedef işlem kodu bu konumda çalıştırdığında, kesme yönergesi işlemin hata ayıklayıcıda kesilmesine neden olur. Seçtiğiniz eylemleri gerçekleştirdikten sonra, hedefin yürütmeyi sürdürmesine neden olabilirsiniz ve yürütme başlangıçta o konumda bulunan yönergeyle devam eder.
İşlemci Kesme Noktası Türlerinin Kullanılabilirliği
I (g/ç) seçeneği yalnızca çekirdek modunda hata ayıklama sırasında kullanılabilir.
Tüm veri boyutları tüm işlemci kesme noktası türleriyle kullanılamaz. İzin verilen boyutlar hedef bilgisayarın işlemcisine bağlıdır. Ayrıntılar için bkz. ba (Erişimde Kesme).
Yazılım Kesme Noktalarının ve İşlemci Kesme Noktalarının Sınırlamaları
bp veya bm /a komutlarını kullanırken program adresi yerine veri adresi belirtebilirsiniz. Ancak, bir veri konumu belirtilse bile, bu komutlar işlemci kesme noktaları değil yazılım kesme noktaları oluşturur. Hata ayıklayıcı yazılım kesme noktası belirli bir konuma yerleştirildiğinde, o bellek konumunun içeriğini geçici olarak bir kesme yönergesiyle değiştirir. Hata ayıklayıcısı bu konumun özgün içeriğini hatırladığından ve hedef işlem bu kodu yürütmeye çalıştığında hata ayıklayıcı uygun şekilde yanıt verdiği için bu yürütülebilir görüntüyü bozmaz. Ancak bir yazılım kesme noktası bir veri konumunda ayarlandığında, ortaya çıkan üzerine yazma veri bozulmasına neden olabilir. Bu nedenle, bir veri konumunda yazılım kesme noktası ayarlamak yalnızca bu konumun yalnızca yürütülebilir kod olarak kullanılacağından eminseniz güvenlidir.
bp, bu ve bm komutları, işlemci yönergesini kesme yönergesiyle değiştirerek yazılım kesme noktalarını ayarlar. Bu nedenle, bunlar salt okunur kodda veya üzerine yazılamayan başka bir kodda kullanılamaz. Bu tür bir kodda kesme noktası ayarlamak için e (yürüt) seçeneğiyle ba (Access'te Kesme) kullanmanız gerekir.
Aynı adreste yalnızca kesme noktası tetiklendiğinde otomatik olarak yürütülen komutta farklı olan birden çok işlemci kesme noktası oluşturamazsınız. Ancak, aynı adreste diğer kısıtlamalarından farklı olan birden çok kesme noktası oluşturabilirsiniz (örneğin, /p, /t, /c ve /C seçeneklerinin farklı değerlerine sahip ba komutunu kullanarak aynı adreste birden çok kesme noktası oluşturabilirsiniz).
Kullanıcı modu işlemindeki ilk kesme noktası (genellikle ana işlevde veya eşdeğerinde ayarlanır) işlemci kesme noktası olamaz.
Desteklenen işlemci kesme noktalarının sayısı hedef işlemci mimarisine bağlıdır.
Yazılım Kesme Noktalarını ve İşlemci Kesme Noktalarını Denetleme
Yazılım kesme noktaları bp (Kesme Noktasını Ayarla), bm (Simge Kesme Noktasını Ayarla) ve bu (Çözümlenmemiş Kesme Noktasını Ayarla) komutları ile oluşturulabilir. İşlemci kesme noktaları ba (Access'te Kesme) komutuyla oluşturulabilir. Kesme noktalarını devre dışı bırakmayan, etkinleştiren ve değiştiren komutlar her tür kesme noktasına uygulanır. Kesme noktalarının listesini görüntüleyen komutlar tüm kesme noktalarını içerir ve her birinin türünü belirtir. Bu komutların listesi için bkz. Kesme Noktalarını Denetleme Yöntemleri.
WinDbg Kesme Noktaları iletişim kutusu, "e", "r", "w" veya "i" şeklinde gösterilen ve ardından bloğun boyutuyla belirtilen işlemci kesme noktaları da dahil olmak üzere tüm kesme noktalarını görüntüler. Bu iletişim kutusu herhangi bir kesme noktasını değiştirmek için kullanılabilir. Bu iletişim kutusundaki Komut metin kutusu, herhangi bir kesme noktası türü oluşturmak için kullanılabilir. bir işlemci kesme noktası istenirse, girişi "ba" ile başlatın. WinDbg Ayrıştırma penceresinde veya Kaynak penceresinde fareyi kullanarak bir kesme noktası ayarladığınızda, hata ayıklayıcı çözümlenmemiş bir yazılım kesme noktası oluşturur.
İşlemci kesme noktaları, işlemcinin hata ayıklama kayıtlarında depolanır. Hata ayıklama yazmaç değerini el ile düzenleyerek kesme noktası ayarlamak mümkündür, ancak bu kesinlikle önerilmez.