Sdílet prostřednictvím


Přepínání režimů

Při řízení ladění v uživatelském režimu z ladicího programu jádra narazíte na čtyři různé režimy a můžete mezi nimi přepínat různými způsoby.

Poznámka Při popisu tohoto scénáře cílová aplikace odkazuje na aplikaci v uživatelském režimu, která se ladí, cílový počítač odkazuje na počítač, který obsahuje cílovou aplikaci a proces CDB nebo NTSD, a hostitelský počítač odkazuje na počítač, který obsahuje ladicí program jádra.

Zobrazí se následující čtyři režimy:

Ladění v uživatelském režimu
Cílový počítač a cílová aplikace se zablokují. V příkazovém okně ladicího programu kernelového ladicího programu se zobrazí výzva k ladění v uživatelském režimu. V WinDbg se na příkazovém řádku v dolním panelu okna WinDbg zobrazí vstup>. Na tuto výzvu můžete zadat příkazy, jako by byly zadané během ladění v uživatelském režimu, a analyzovat stav cílové aplikace nebo způsobit, že se spustí nebo projde jeho spuštěním. Soubory symbolů, příponové knihovny DLL a další soubory, ke kterým ladicí program přistupuje, budou tyto soubory v cílovém počítači, nikoli na hostitelském počítači.

Spuštění cílové aplikace
Cílový počítač je spuštěný, cílová aplikace je spuštěná a ladicí program čeká. Tento režim je stejný jako nechat cílový proces provádět v běžném režimu ladění.

Režim spánku
Cílový počítač je spuštěný, ale cílová aplikace je zablokovaná a oba ladicí programy jsou zablokované. Tento režim je užitečný, pokud potřebujete něco udělat v cílovém počítači, ale nechcete změnit stav relace ladění.

Ladění v režimu jádra
Cílový počítač a cílová aplikace se zablokují. V okně příkazů ladicího programu pro jádro se zobrazí ladicí výzva kd>. Tento režim je typickým stavem ladění v režimu jádra.

Relace začíná v režimu ladění v uživatelském režimu. Následující akce a události způsobí, že se režim změní:

  • Pokud chcete přepnout z ladění v uživatelském režimu na spuštění cílové aplikace, použijte příkaz g (Go) na příkazovém Input> řádku.

  • Pokud chcete dočasně přepnout z ladění v uživatelském režimu na spuštění cílové aplikace a pak se vrátit k ladění v uživatelském režimu, použijte krok, trasování nebo jiný dočasný příkaz spuštění. Seznam takových příkazů najdete v tématu Řízení cíle.

  • Pokud chcete přepnout z ladění v uživatelském režimu do režimu spánku, použijte příkaz .sleep (Pozastavit ladicí program ). Tento příkaz je časově omezený. Po vypršení doby se systém vrátí do ladění v uživatelském režimu.

  • Pokud chcete přepnout z ladění v uživatelském režimu na ladění v režimu jádra, použijte příkaz .breakin (Break to the Kernel Debugger). Upozorňujeme, že .breakin může skončit chybou odepření přístupu, pokud volající proces nemá administrátorská práva. V tomto případě přepněte na KD zadáním krátkého příkazu .sleep a stisknutím kombinace kláves CTRL+C.

  • V určitých prostředích můžete přepnout z provádění cílové aplikace na ladění v uživatelském režimu. Pokud cílový počítač používá systém Microsoft Windows XP nebo novější verzi operačního systému Windows, můžete použít příkaz rozšíření !bpid . Pokud používáte CDB (ne NTSD), můžete v cílovém počítači aktivovat okno CDB a stisknout ctrl+C.

  • Pokud cílová aplikace dosáhne zarážky, dojde k výjimce, dojde k nějaké jiné řízené události nebo končí, systém přepne z provádění cílové aplikace na ladění v uživatelském režimu. Takové události byste měli naplánovat předem, zejména pokud používáte NTSD. Další informace o těchto událostech naleznete v tématu Použití zarážek a řízení výjimek a událostí.

  • Pokud chcete přepnout z provádění cílové aplikace na ladění v režimu jádra, stiskněte kombinaci kláves CTRL+C v okně KD, stiskněte kombinaci kláves CTRL+BREAK nebo v nabídce Ladění v okně WinDbg nebo stiskněte klávesy SYSRQ nebo ALT+SYSRQ na klávesnici cílového počítače. (Pokud je váš ladicí program jádra KD a současně, když ladicí program jádra komunikuje s ladicím programem v uživatelském režimu, stisknete CTRL+C, může ladicí program v uživatelském režimu toto stisknutí zachytit.)

  • Pokud ladicí program zaznamená chybu jádra nebo pokud používáte nástroj Breakin.exe, systém přepne z provádění cílové aplikace na ladění v režimu jádra.

  • Pokud chcete přepnout z režimu spánku na ladění v uživatelském režimu, počkejte na vypršení platnosti doby spánku, spusťte nový proces CDB v cílovém počítači pomocí možnosti příkazového řádku -wake nebo použijte příkaz .wake (Wake Debugger) v jiné kopii CDB nebo NTSD na cílovém počítači.

  • Pokud chcete vypnout ladění v režimu jádra, použijte příkaz g (Go) na příkazovém kd> řádku. Tento příkaz se vrátí do ladění v uživatelském režimu nebo spuštění cílové aplikace (podle toho, který z těchto dvou je naposledy použitý stav).