Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Användarläge och kernellägeskod använder olika rutiner för att bryta sig in i felsökningsprogrammet.
User-Mode Bryt rutiner
En avbrottsrutin gör att ett undantag inträffar i den aktuella processen, så att den anropande tråden kan signalera det felsökningsprogram som är associerat med anropsprocessen.
Om du vill bryta dig in i ett felsökningsprogram från ett användarlägesprogram använder du funktionen DebugBreak. Prototypen är följande:
VOID DebugBreak(VOID);
När ett användarlägesprogram anropar DebugBreak sker följande möjliga åtgärder:
Om ett felsökningsprogram i användarläge är kopplat kommer programmet att bryta sig in i felsökningsprogrammet. Det innebär att programmet pausas och felsökningsprogrammet blir aktivt.
Om ett felsökningsprogram i användarläge inte är anslutet, men felsökning i kernelläge var aktiverat vid start, kommer hela datorn att bryta sig in i kernelfelsökaren. Om en kernelfelsökare inte är ansluten fryser datorn och väntar på en kernelfelsökare.
Om ett felsökningsprogram i användarläge inte är kopplat och felsökning i kernelläge inte är aktiverat avslutas programmet med ett ohanterat undantag och felsökningsprogrammet efter döden (just-in-time) aktiveras. Mer information finns i Aktivera felsökning av postmortem.
Kernel-Mode Bryta rutiner
När ett kernellägesprogram bryter sig in i felsökningsprogrammet låses hela operativsystemet tills kernelfelsökaren tillåter att körningen återupptas. Om det inte finns något kernelfelsökare behandlas detta som en buggkontroll.
DbgBreakPoint-rutinen fungerar i kernellägeskod, men liknar annars rutinen DebugBreak-användarläge.
Rutinen DbgBreakPointWithStatus orsakar också en paus, men den skickar dessutom en 32-bitars statuskod till felsökningsprogrammet.
Rutinerna KdBreakPoint och KdBreakPointWithStatus är identiska med DbgBreakPoint respektive DbgBreakPointWithStatus när de kompileras i den kontrollerade byggmiljön. När de kompileras i den kostnadsfria byggmiljön har de ingen effekt.
Kernel-Mode villkorliga brytrutiner
Två villkorliga brytrutiner är tillgängliga för kod i kernelläge. Dessa rutiner testar ett logiskt uttryck. Om uttrycket är falskt stoppas körningen och felsökningsprogrammet blir aktivt.
ASSERT-makrot testar ett logiskt uttryck. Om uttrycket är falskt stoppas körningen och felsökningsprogrammet blir aktivt. Det misslyckade uttrycket och dess plats i programmet visas i felsökningsprogrammet.
ASSERTMSG-makrot är identiskt med ASSERT förutom att ett ytterligare meddelande kan skickas till felsökningsprogrammet.
ASSERT och ASSERTMSG är endast aktiva när de kompileras i den kontrollerade byggmiljön. När de kompileras i den kostnadsfria byggmiljön har de ingen effekt.