Sdílet prostřednictvím


Vstup do ladicího programu

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:

  1. 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.

  2. 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.

  3. 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.