Aracılığıyla paylaş


Hata Ayıklayıcıya Giriş Yapmak

Kullanıcı modu ve çekirdek modu kodu, hata ayıklayıcıya girmek için farklı yordamlar kullanır.

User-Mode Rutinleri Kır

Kesme işlemi, mevcut süreçte bir özel durum oluşturur, böylece çağıran iş parçacığı kendisine bağlı hata ayıklayıcıya sinyal gönderebilir.

Kullanıcı modu programından hata ayıklayıcıya girmek için DebugBreak işlevinikullanın. Prototipi aşağıdaki gibidir:

VOID DebugBreak(VOID);

Kullanıcı modu programı DebugBreak çağırıldığında, aşağıdaki olası eylemler gerçekleşir:

  1. Kullanıcı modu hata ayıklayıcısı ekliyse, program hata ayıklayıcıya girer. Bu, programın duraklatılacağı ve hata ayıklayıcının etkin olacağı anlamına gelir.

  2. Kullanıcı modu hata ayıklayıcısı bağlı değilse ancak çekirdek modunda hata ayıklama önyükleme zamanında etkinleştirildiyse, bilgisayarın tamamı çekirdek hata ayıklayıcısına girer. Bir çekirdek hata ayıklayıcısı bağlı değilse, bilgisayar donar ve bir çekirdek hata ayıklayıcısını bekler.

  3. Kullanıcı modu hata ayıklayıcı bağlanmamışsa ve çekirdek moda hata ayıklama etkin değilse, program işlenmemiş bir özel durumla sonlandırılır ve sonradan (tam zamanında) hata ayıklayıcı etkinleştirilir. Daha fazla bilgi için bkz. Postmortem Debugging'i etkinleştirme.

Kernel-Mode Rutinleri Kırma

Bir çekirdek modlu program hata ayıklayıcıya girdiğinde, çekirdek hata ayıklayıcı yürütmenin devam etmesine izin verene kadar tüm işletim sistemi kilitlenir. Çekirdek hata ayıklayıcısı yoksa, bu bir hata denetimi olarak değerlendirilir.

DbgBreakPoint yordamı çekirdek modu kodunda çalışır, ancak DebugBreak kullanıcı modu yordamına benzer.

DbgBreakPointWithStatus yordamı da bir kesmeye neden olur, ancak ek olarak hata ayıklayıcıya 32 bit durum kodu gönderir.

KdBreakPoint ve KdBreakPointWithStatus rutinleri, denetlenen derleme ortamında derlendiğinde DbgBreakPoint ve DbgBreakPointWithStatusrutinleriyle sırasıyla aynıdır. Ücretsiz derleme ortamında derlendiğinde hiçbir etkisi olmaz.

Kernel-Mode Koşullu Kesme Yordamları

Çekirdek modu kodu için iki koşullu kesme yordamı vardır. Bu rutinler bir mantıksal ifadeyi test eder. İfade false ise yürütme durdurulur ve hata ayıklayıcı etkin hale gelir.

  • ASSERT makro bir mantıksal ifadeyi test ediyor. İfade false ise yürütme durdurulur ve hata ayıklayıcı etkin hale gelir. Başarısız ifade ve programdaki konumu hata ayıklayıcıda görüntülenir.

  • ASSERTMSG makro, hata ayıklayıcıya ek ileti gönderilmesine izin vermesi dışında ASSERT aynıdır.

ASSERT ve ASSERTMSG yalnızca denetlenen derleme ortamında derlendiğinde etkindir. Ücretsiz derleme ortamında derlendiğinde hiçbir etkisi olmaz.