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.
Kullanıcı modu ve çekirdek modu uygulamalarında özel durumları çeşitli yöntemlerle yakalayabilir ve işleyebilirsiniz. Etkin bir hata ayıklayıcısı, bir postmortem hata ayıklayıcısı veya iç hata işleme yordamı, istisnaları yönetmenin yaygın yollarıdır.
Bu çeşitli özel durum işleyicilerinin öncelik sıralaması hakkında daha fazla bilgi için, Postmortem Hata Ayıklamayı Etkinleştirmebölümüne bakın.
Microsoft Windows işletim sistemi bir hata ayıklayıcının bir özel durumu işlemesine izin verdiğinde, özel durumu oluşturan uygulama hata ayıklayıcıya kontrolünü devreder. Başka bir ifadeyle uygulama durdurulur ve hata ayıklayıcı etkin hale gelir. Hata ayıklayıcı daha sonra özel durumu bir şekilde işleyebilir veya durumu analiz edebilir. Daha sonra hata ayıklayıcı işlemi sonlandırabilir veya çalışmaya devam etmesine izin verebilir.
Hata ayıklayıcı özel durumu yoksayar ve uygulamanın çalışmaya devam etmesine izin verirse, işletim sistemi hata ayıklayıcısı yokmuş gibi diğer özel durum işleyicilerini arar. Özel durum işlenirse uygulama çalışmaya devam eder. Ancak, özel durum işlenmemiş olarak kalırsa hata ayıklayıcıya bu durumla başa çıkmak için ikinci bir fırsat verilir.
Özel Durumu Çözümlemek için Hata Ayıklayıcıyı Kullanma
Hata ayıklayıcıda bir özel durum veya olay oluştuğunda, yürütülmekte olan kodu ve uygulamanın kullandığı belleği incelemek için hata ayıklayıcısını kullanabilirsiniz. Belirli miktarları değiştirerek veya uygulamada farklı bir noktaya atlayarak özel durumun nedenini kaldırabilirsiniz.
gh (Özel Durum İşlenmiş Olarak Git) veya gn (Özel Durum İşlenmedi olarak Git) komutu vererek yürütmeyi sürdürebilirsiniz.
Hata ayıklayıcının özel durumu işlemek için ikinci fırsatında gn komutunu verirseniz uygulama sona erer.
Kernel-Mode Özel Durumları
Çekirdek modu kodunda oluşan özel durumlar, kullanıcı modu özel durumlarından daha ciddidir. Çekirdek modu özel durumları işlenmezse, hata denetimi verilir ve sistem durur.
Kullanıcı modu özel durumlarında olduğu gibi, sisteme bir çekirdek modu hata ayıklayıcısı eklenmişse, hata ayıklayıcıya hata denetimi ekranı (mavi ekranolarak da bilinir) gösterilmeden önce bildirim gönderilir. Hiçbir hata ayıklayıcısı eklenmemişse, hata denetimi ekranı görüntülenir. Bu durumda, işletim sistemi kilitlenme bilgi dökümü dosyası oluşturabilir.
Hata Ayıklayıcıdan Özel Durumları ve Olayları Denetlemeyi
Hata ayıklayıcısını belirli özel durumlara ve olaylara belirli bir şekilde tepki vermek üzere yapılandırabilirsiniz.
Hata ayıklayıcı, her özel durum veya olay için kesme durumunu ayarlayabilir:
Olay gerçekleştiği anda hata ayıklayıcıda bir kesilmeye neden olabilir ("ilk şans").
Diğer hata işleyicilerine yanıt verme fırsatı ("ikinci şans") verildikten sonra olay devreye girebilir.
Olay hata ayıklayıcıya bir ileti de gönderebilir, ancak yürütmeye devam edebilir.
Hata ayıklayıcı bu olayı yoksayabilir.
Hata ayıklayıcısı her özel durum ve olay için işleme durumunu da ayarlayabilir. Hata ayıklayıcı, olayı işlenen bir özel durum veya işlenmeyen özel durum gibi değerlendirebilir. (Elbette, aslında hata olmayan olaylar herhangi bir işleme gerektirmez.)
Aşağıdakilerden birini yaparak kesme durumunu ve işleme durumunu denetleyebilirsiniz:
Hata Ayıklayıcısı Komut penceresinde SXE, SXD, SXNveya SXI komutunukullanın.
(CDB ve NTSD)komut satırında -x, -xe, -xd, -xnveya -xi seçeneğini kullanın.
(CDB, NTSD ve KD) Tools.ini dosyasında sxe veya sxd anahtar sözcüğünü kullanın.
(Yalnızca WinDbg) Olay Filtreleri iletişim kutusunu açmak için Hata Ayıklama menüsünde Olay Filtreleri seçin ve ardından istediğiniz seçenekleri belirleyin.
SX\* komutu, -x\* komut satırı seçeneği ve sx\* Tools.ini anahtar sözcüğü genellikle belirtilen olayın kesme durumunu ayarlar. bunun yerine işleme durumunun ayarlanmasına neden olmak için -h seçeneğini ekleyebilirsiniz.
Her zaman ara verme durumu yerine işleme durumunu belirten dört özel olay kodu (cc, hc, bpecve ssec) vardır.
.lastevent (Son Olayı Görüntüle) komutunu kullanarak en son özel durumu veya olayı görüntüleyebilirsiniz.
Kesme Durumu Denetleme
Bir özel durum veya olayın kesme durumunu ayarladığınızda, aşağıdaki seçenekleri kullanabilirsiniz.
| Komut | Durum adı | Açıklama |
|---|---|---|
| SXE veya -xe | Kesme (Etkin) |
Bu özel durum oluştuğunda, hedef hemen hata ayıklayıcıya girer. Bu kesme işlemi, diğer hata işleyicileri etkinleştirilmeden önce gerçekleşir. Bu yöntem ilk şans işlemeolarak adlandırılır. |
| SXD veya -xd | İkinci şans molası (Devre Dışı) |
Hata ayıklayıcı, bir ileti görüntülense de bu tür bir ilk fırsat istisnası için devreye girmez. Diğer hata işleyicileri bu özel durumu gideremezse yürütme durdurulur ve hedef hata ayıklayıcıya girer. Bu yöntem, ikinci şans işlemeolarak adlandırılır. |
| SXN veya -xn | Çıktı (Bildir ) |
Bu özel durum oluştuğunda, hedef uygulama hata ayıklayıcıya hiç girmez. Ancak, kullanıcıyı bu özel durum hakkında bilgilendiren bir ileti görüntülenir. |
| SXI veya -xi | Yok saymak |
Bu özel durum oluştuğunda, hedef uygulama hata ayıklayıcıya girmez ve hiçbir ileti görüntülenmez. |
SX* ayarı bir özel durum beklenmiyorsa, hedef uygulama ikinci şansta hata ayıklayıcıya girer. Olaylar için varsayılan durum, bu konunun aşağıdaki "Olay Tanımları ve Varsayılanlar" bölümünde listelenmiştir.
WinDbg grafik arabirimini kullanarak kesme durumunu ayarlamak için, Olay Filtreleri, Hata Ayıklama menüsünde, Olay Filtreleri iletişim kutusundaki listeden istediğiniz olayı seçin ve ardından Etkin, Devre Dışı, Çıktıveya Yoksayseçeneğini belirleyin.
İşleme Durumunu Denetleme
gh (Özel Durum İşlendi ile Git) komutunu kullanmadığınız sürece tüm olaylar işlenmemiş olarak kabul edilir.
sx\* komutunu -h seçeneğiyle birlikte kullanmadığınız sürece tüm özel durumlar işlenmemiş olarak kabul edilir.
Ayrıca, SX* seçenekleri geçersiz tanıtıcılar, STATUS_BREAKPOINT kesme yönergeleri ve tek adımlı özel durumlar için işleme durumu yapılandırmasını yapabilir. (Bu yapılandırma, onların kesme yapılandırmasından ayrıdır.) Onların kesme durumunu yapılandırdığınızda, bu olaylar sırasıyla ch, bpeve sseolarak adlandırılır. İşleme durumlarını yapılandırdığınızda, bu olaylar sırasıyla hc, bpecve ssecolarak adlandırılır. (Olayların tam listesi için aşağıdaki "Olay Tanımları ve Varsayılanlar" bölümüne bakın.)
CTRL+C olayının (bilgi) işleme durumunu yapılandırabilirsiniz, ancak kesme durumunu yapılandıramazsınız. Bir uygulama bir CTRL+C olayı alırsa, uygulama her zaman hata ayıklayıcıya girer.
cc, hc, bpecve ssec olaylarında SX* komutunu kullandığınızda veya bir özel durumda -h seçeneğiyle birlikte SX* komutunu kullandığınızda aşağıdaki eylemler gerçekleşir.
| Komut | Durum adı | Açıklama |
|---|---|---|
SXE |
İşlenen |
Yürütme devam ettiğinde olayın işlendiği kabul edilir. |
SXD,SXN,SXI |
İşlenmedi |
Yürütme devam ettiğinde olayın işlenmediği kabul edilir. |
İşleme durumunu WinDbg grafik arabirimini kullanarak ayarlamak için, Hata Ayıklama menüsünden olay filtreleri seçin, Olay Filtreleri iletişim kutusundaki listeden istediğiniz olayı seçin ve ardından İşlenmiş veya İşlenmedi seçin.
Otomatik Komutları
Hata ayıklayıcısı, olay veya özel durum hata ayıklayıcıda bir kesmeye neden olursa otomatik olarak yürütülen komutları ayarlamanıza da olanak tanır. İlk şans sonu için bir komut dizesi ve ikinci şans sonu için bir komut dizesi ayarlayabilirsiniz. Bu dizeleri SX\* komutuyla veya Debug | ile ayarlayabilirsiniz Olay Filtreleri komutu. Her komut dizesi noktalı virgülle ayrılmış birden çok komut içerebilir.
Bu komutlar, kesme durumundan bağımsız olarak yürütülür. Yani, kesme durumu "Yoksay" ise komut yine yürütülür. Kesme durumu "İkinci şans sonu" ise, diğer özel durum işleyicileri dahil olmadan önce, özel durum ilk oluştuğunda ilk şans komutu yürütülür. Komut dizesi,g (Go),gh (Özel Durum İşlenmiş Olarak Git) veyagn (Özel Durum İşlenmedi olarak Git) gibi bir yürütme komutuyla sona erebilir.
Olay Tanımları ve Varsayılanlar
Aşağıdaki istisnaların kesme veya işleme durumunu değiştirebilirsiniz. Varsayılan kesme durumları belirtilir.
Aşağıdaki özel durumların varsayılan işleme durumu her zaman "İşlenmedi" şeklindedir. Bu durumu değiştirirken dikkatli olun. Bu durumu "İşlenmiş" olarak değiştirirseniz, bu türdeki tüm birinci şans ve ikinci şans özel durumları işlenir ve bu yapılandırma özel durum işleme yordamlarının tümünü atlar.
| Olay kodu | Anlamı | Varsayılan kesme durumu |
|---|---|---|
asrt |
Onay hatası |
Ara |
av |
Erişim ihlali |
Ara |
dm |
Veriler yanlış hizalanmış |
Ara |
dz |
Sıfıra göre tamsayı bölme |
Ara |
c000008e |
Sıfıra kayan nokta bölme |
Ara |
eh |
C++ EH istisnası |
İkinci şans molası |
gp |
Koruma sayfası ihlali |
Ara |
ii |
Yasadışı talimat |
İkinci şans molası |
iov |
Tamsayı taşması |
Ara |
ip |
Sayfa içi G/Ç hatası |
Ara |
isc |
Geçersiz sistem çağrısı |
Ara |
lsq |
Geçersiz kilit sırası |
Ara |
sbo |
Yığın tampon taşması |
Ara |
|
Yığın taşması |
Ara |
hafta sonu |
Uyandırma hata ayıklayıcısı |
Ara |
aph |
Uygulama askıda kalıyor Windows işletim sistemi tarafından bir işlemin yanıt vermeyi durdurduğu sonucuna varılırsa (yani, kilitlendiğinde) bu özel durum tetiklenir. |
Ara |
3c |
Çocuk uygulama sonlandırma |
İkinci şans molası |
ch |
Geçersiz referans |
Ara |
Numarası |
Herhangi bir numaralandırılmış özel durum |
İkinci şans molası |
Notah (Onay İşleme) komutunu kullanarak belirli bir adres için asrt kesme durumunu geçersiz kılabilirsiniz. ch ve hc olay kodları aynı özel duruma başvurur. Kesme durumunu denetlediğinizde, sx* chkullanın. İşleme durumunu kontrol ederken sx* hckullanın.
Aşağıdaki istisnaların kesme veya işleme durumunu değiştirebilirsiniz. Varsayılan kesme durumları belirtilir.
Aşağıdaki özel durumların varsayılan işleme durumu her zaman "İşleniyor" şeklindedir. Bu özel durumlar hata ayıklayıcıyla iletişim kurmak için kullanıldığından, genellikle durumlarını "İşlenmedi" olarak değiştirmemelisiniz. Hata ayıklayıcı bunları yoksayarsa, bu durum diğer özel durum işleyicilerinin istisnaları yakalamasına neden olur.
Bir uygulama, hata ayıklayıcıyla iletişim kurmak için DBG_COMMAND_EXCEPTION (dbce) kullanabilir. Bu özel durum kesme noktasına benzer, ancak bu özel durum oluştuğunda belirli bir şekilde tepki vermek için SX* komutunu kullanabilirsiniz.
| Olay kodu | Anlamı | Varsayılan kesme durumu |
|---|---|---|
dbce |
Özel hata ayıklayıcı komut istisnası |
Yok say |
vcpp |
Özel Visual C++ istisnası |
Yok say |
wos |
WOW64 tek adımlı özel durum |
Ara |
wob |
WOW64 kesme noktası istisnası- |
Ara |
Sse |
Tek adımlı özel durum |
Ara |
bpe |
Kesme noktası özel durumu |
Ara |
cce |
CTRL+C veya CTRL+BREAK Hedef bir konsol uygulamasıysa ve CTRL+C veya CTRL+BREAK bu uygulamaya geçirilirse bu istisna tetiklenir. |
Ara |
Not Yukarıdaki tablodaki son üç özel durumun iki farklı olay kodu vardır. Kesme durumlarını denetlerken, sse, bpeve ccekullanın. bunların işleme durumunu denetlerken, sseckullanın bpecve cc.
Yönetilen kodda hata ayıklarken aşağıdaki özel durumlar yararlıdır.
| Olay kodu | Anlamı | Varsayılan durum |
|---|---|---|
clr |
Common Language Runtime istisnası |
İkinci şans molası İşlenmedi |
clrn |
Ortak Dil Çalışma Zamanı bildirim istisnası |
İkinci şans molası Işlenen |
Aşağıdaki olayların kesme durumunu değiştirebilirsiniz. Bu olaylar özel durum olmadığından, bunların işleme durumu ilgisizdir.
| Olay kodu | Anlamı | Varsayılan kesme durumu |
|---|---|---|
ser |
Sistem hatası |
Yok say |
cpr[:Süreç] |
İşlem oluşturma Bu olayın kesme durumunun ayarlanması yalnızca kullanıcı modu hata ayıklaması için geçerlidir. Bu olay çekirdek modunda gerçekleşmez. Bu olayı yalnızca -okomut satırı seçeneği veya .childdbg (Alt İşlemlerde Hata Ayıkla) komutu aracılığıyla CDB veya WinDbg'de alt işlemlerin hata ayıklamasını etkinleştirdiyseniz denetleyebilirsiniz. İşlem adı isteğe bağlı bir dosya adı uzantısı ve joker karakter olarak bir yıldız işareti () veya soru işareti (?) içerebilir. Hata ayıklayıcı yalnızca en son cpr ayarını hatırlar. Ayrı işlemler için ayrı ayarlar desteklenmez. cpr ile İşlemarasında iki nokta üst üste veya boşluk ekleyin. İşlemi atlanırsa, ayar herhangi bir alt süreç oluşturma işlemi için geçerlidir. |
Yok say |
epr[:İşlem] |
İşlem çıkışı Bu olayın kesme durumunun ayarlanması yalnızca kullanıcı modu hata ayıklaması için geçerlidir. Bu olay çekirdek modunda gerçekleşmez. Bu olayı yalnızca -okomut satırı seçeneği veya .childdbg (Alt İşlemlerde Hata Ayıkla) komutu aracılığıyla CDB veya WinDbg'de alt işlemlerin hata ayıklamasını etkinleştirdiyseniz denetleyebilirsiniz. İşlem adı isteğe bağlı bir dosya adı uzantısı ve joker karakter olarak bir yıldız işareti () veya soru işareti (?) içerebilir. Hata ayıklayıcı yalnızca en son epr ayarını hatırlar. Ayrı işlemler için ayrı ayarlar desteklenmez. epr ile İşlemarasına iki nokta veya boşluk ekleyin. İşlem atlanırsa, ayar tüm alt işlem çıkışları için geçerlidir. |
Yok say |
ct |
İş parçacığı oluşturma |
Yok say |
et |
İş parçacığı sonlandırılması |
Yok say |
ld[:Modül] |
Yükleme modülü Modülbelirtirseniz, bu ada sahip modül yüklendiğinde kesilme gerçekleşir. Modülü modülün adını veya adresini belirtebilir. Ad kullanılırsa, Modül çeşitli joker karakterler ve tanımlayıcılar içerebilir. (Söz dizimi hakkında daha fazla bilgi için bkz. Dize Joker Karakter Sözdizimi.) Hata ayıklayıcı yalnızca en son ld ayarını hatırlar. Ayrı modüller için ayrı ayarlar desteklenmez. ld ile Modülüarasında iki nokta veya boşluk ekleyin. modülü atlanırsa, herhangi bir modül yüklendiğinde olay tetiklenir. |
Çıktı |
ud[:Modülü] |
Modülü kaldır Modülüolarak belirtirseniz, bu ada sahip modül veya bu temel adresteki modül kaldırıldığında kesme noktası oluşur. Modülü modülün adını veya adresini belirtebilir. Eğer ad kullanılırsa, Modül tam bir ad olabilir veya joker karakterler içerebilir. Modülü tam bir adsa, geçerli hata ayıklayıcı modül listesi kullanılarak hemen bir temel adrese çözümlenir ve bir adres olarak saklanır. Modülü joker karakterler içeriyorsa, kaldırma olayları gerçekleştiğinde desen dizesi daha sonra eşleştirme için tutulur. Nadiren, hata ayıklayıcının yükleme kaldırma olayları için ad bilgileri yoktur ve sadece temel adresle eşleşir. Bu nedenle, Modülü joker karakterler içeriyorsa, hata ayıklayıcı bu özel kaldırma durumunda bir ad eşleşmesi gerçekleştiremez ve herhangi bir modül kaldırıldığında hata ayıklama süreci durdurulur. Hata ayıklayıcı yalnızca en son ud ayarını hatırlar. Ayrı modüller için ayrı ayarlar desteklenmez. ud ve Modülüarasına iki nokta üst üste veya bir boşluk ekleyin. modülü atlanırsa, herhangi bir modül yüklendiğinde olay tetiklenir. |
Çıktı |
[:Çıktı] |
Hedef uygulama çıkışı Outputbelirtirseniz, kesme yalnızca belirtilen desenle eşleşen çıkış alındığında gerçekleşir. Çıktı çeşitli joker karakterler ve tanımlayıcılar içerebilir. (Söz dizimi hakkında daha fazla bilgi için bkz. Dize Joker Karakter Sözdizimi.) Ancak, Çıktı iki nokta veya boşluk içeremez. Eşleşme büyük/küçük harfe duyarlı değildir. ve ile vearasında iki nokta veya boşluk ekleyin. |
Yok say |
ibp |
İlk kesme noktası (Bu olay, hata ayıklama oturumunun başında ve hedef bilgisayarı yeniden başlattıktan sonra gerçekleşir.) |
Kullanıcı modunda: Kesme. -gkomut satırı seçeneğini kullanarak bu durumu "Yoksay" olarak değiştirebilirsiniz. Çekirdek modunda: Yoksay. Bu durumu çeşitli yöntemlerle "Etkin" olarak değiştirebilirsiniz. Bu durumu değiştirme hakkında daha fazla bilgi için bkz. Hedef Bilgisayarın Kapanması ve Yeniden Başlatılması. |
iml |
İlk modül yükü (Yalnızca çekirdek modu) |
Yoksay. Bu durumu çeşitli yöntemlerle "Kesme" olarak değiştirebilirsiniz. Bu durumu değiştirme hakkında daha fazla bilgi için bkz. Hedef Bilgisayarın Kapanması ve Yeniden Başlatılması. |