Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Kód uživatelského režimu a režimu jádra používají různé rutiny pro vstup do ladicího programu.
User-Mode Přerušovací rutiny
Rutina přerušení způsobí, že v aktuálním procesu dojde k výjimce, aby volající vlákno mohlo signalizovat ladicí program přidružený k volajícímu procesu.
Chcete-li spustit ladicí program z programu v uživatelském režimu, použijte funkci DebugBreak. Prototyp je následující:
VOID DebugBreak(VOID);
Když program v uživatelském režimu volá DebugBreak, dojde k následujícím možným akcím:
Pokud je připojen ladicí program v uživatelském režimu, program přejde do ladicího programu. To znamená, že program se pozastaví a debugger bude aktivován.
Pokud není připojený ladicí program v uživatelském režimu, ale ladění režimu jádra bylo povoleno při spuštění, celý počítač se přepne do ladicího programu jádra. Pokud není připojený ladicí program jádra, počítač se zablokuje a čeká na ladicí program jádra.
Pokud není připojený ladicí program v uživatelském režimu a ladění v režimu jádra není povolené, program se ukončí s neošetřenou výjimkou a aktivuje se post mortem (just-in-time) ladicí program. Další informace naleznete v tématu Povolení ladění postmortem.
Kernel-Mode Přerušení Rutiny
Když program v režimu jádra přejde do ladicího programu, celý operační systém se zablokuje, dokud ladicí program jádra neumožní pokračování spuštění. Pokud není k dispozici žádný ladicí program jádra, považuje se to za kontrolu chyb.
Rutina DbgBreakPoint funguje v kódu v režimu jádra, ale v opačném případě se podobá rutině user-mode DebugBreak .
Rutina DbgBreakPointWithStatus také způsobí přerušení, ale navíc odešle 32bitový stavový kód do ladicího programu.
Rutiny KdBreakPoint a KdBreakPointWithStatus jsou stejné jako DbgBreakPoint a DbgBreakPointWithStatus, v uvedeném pořadí, pokud jsou zkompilovány v kontrolovaném prostředí sestavení. Při kompilaci v bezplatném prostředí sestavení nemají žádný vliv.
Kernel-Mode rutiny podmíněného přerušení
Pro kód v režimu jádra jsou k dispozici dvě rutiny podmíněného přerušení. Tyto rutiny testují logický výraz. Pokud je výraz nepravdivý, provedení se zastaví a tím se aktivuje ladicí program.
Makro ASSERT testuje logický výraz. Pokud je výraz false, spuštění se zastaví a ladicí program se aktivuje. Výraz, který selhal, a jeho umístění v programu se zobrazí v ladicím programu.
Makro ASSERTMSG je stejné jako ASSERT s tím rozdílem, že umožňuje odeslání další zprávy do ladicího programu.
ASSERT a ASSERTMSG jsou aktivní pouze při kompilaci v kontrolovaném prostředí sestavení. Při kompilaci v bezplatném prostředí sestavení nemají žádný vliv.