Bejutás a hibakeresőbe

A felhasználói módú és a kernel módú kód különböző rutinokat használ a hibakeresőbe való betöréshez.

User-Mode Rutintörés

A törési rutin kivételt okoz az aktuális folyamatban, hogy a hívószál jelezhesse a hívási folyamathoz társított hibakeresőt.

Ha felhasználói módú programból szeretne hibakeresőt létrehozni, használja a DebugBreak függvényt. Prototípusa a következő:

VOID DebugBreak(VOID);

Amikor egy felhasználói módú program meghívja DebugBreak, a következő lehetséges műveletek fognak történni:

  1. Ha egy felhasználói módú hibakereső van csatolva, a program a hibakeresőbe fog törni. Ez azt jelenti, hogy a program leáll, és a hibakereső aktívvá válik.

  2. Ha egy felhasználói módú hibakereső nincs csatlakoztatva, de a rendszerindításkor engedélyezve volt a kernel módú hibakeresés, a teljes számítógép a kernel-hibakeresőbe fog törni. Ha a rendszermag-hibakereső nincs csatlakoztatva, a számítógép lefagy, és vár egy kernel-hibakeresőre.

  3. Ha nincs csatlakoztatva felhasználói módú hibakereső, és a kernel módú hibakeresés nincs engedélyezve, a program kezeletlen kivétellel leáll, és a rendszer aktiválja a post mortem (just-in-time) hibakeresőt. További információért lásd: a postmortem hibakeresés engedélyezése, .

Kernel-Mode Szünet Rutinok

Amikor egy kernel módú program betör a hibakeresőbe, a teljes operációs rendszer lefagy, amíg a kernel-hibakereső engedélyezi a végrehajtás folytatását. Ha nincs kernel-hibakereső, a rendszer hibaellenőrzésként kezeli.

A DbgBreakPoint rutin kernel módú kódban működik, de egyébként hasonló a DebugBreak felhasználói módú rutinhoz.

A DbgBreakPointWithStatus rutin szintén törést okoz, de 32 bites állapotkódot is küld a hibakeresőnek.

A KdBreakPointés KdBreakPointWithStatus rutinjai megegyeznek DbgBreakPoint és DbgBreakPointWithStatus, amikor az ellenőrzött buildkörnyezetben vannak lefordítva. Amikor az ingyenes buildkörnyezetben összefoglaljuk, nincs hatása.

Kernel-Mode feltételes megszakítási rutinok

A kernel módú kódhoz két feltételes törési rutin érhető el. Ezek a rutinok egy logikai kifejezést tesztelnek. Ha a kifejezés hamis, a végrehajtás leáll, és a hibakereső aktívvá válik.

  • A ASSERT makró egy logikai kifejezést tesztel. Ha a kifejezés hamis, a végrehajtás leáll, és a hibakereső aktívvá válik. A hibás kifejezés és a programbeli helye megjelenik a hibakeresőben.

  • A ASSERTMSG makró megegyezik ASSERT, azzal a kivételrel, hogy lehetővé teszi egy további üzenet küldését a hibakeresőnek.

ASSERT és ASSERTMSG csak akkor aktívak, ha az ellenőrzött buildkörnyezetben fordítják le őket. Az ingyenes buildkörnyezetben történő fordításnak nincs hatása.