Sdílet prostřednictvím


ladění procesu User-Mode pomocí CDB

CdB můžete použít k připojení ke spuštěném procesu nebo k vytvoření a připojení k novému procesu.

připojení ke spuštěném procesu

Příkazový řádek

V okně příkazového řádku se můžete připojit ke spuštěném procesu při spuštění CDB. Použijte jeden z následujících příkazů:

  • cdb -pProcessID
  • cdb -pnProcessName

kde ProcessID je ID procesu spuštěného procesu nebo ProcessName je název spuštěného procesu.

Další informace o syntaxi příkazového řádku naleznete v tématu CDB Command-Line Možnosti.

CDB příkazové okno

Pokud ladicí program již ladí jeden nebo více procesů, můžete se připojit ke spuštěném procesu pomocí příkazu .attach (Připojit k procesu).

Ladicí program vždy spouští více cílových procesů současně, pokud nejsou některá z jejich vláken zablokovaná nebo pozastavená.

Pokud je příkaz .attach úspěšný, ladicí program se připojí k zadanému procesu při příštím vydání příkazu spuštění ladicího programu. Pokud tento příkaz použijete několikrát za sebou, musí být spuštění požadováno ladicím programem tolikrát, kolikrát tento příkaz používáte.

Nepřímo připojení ke spuštěnému procesu

Pokud chcete ladit spuštěný proces a interferovat pouze minimálně při jeho provádění, měli byste ladit proces neinvazivně.

Příkazový řádek

Chcete-li neinvazivně ladit spuštěný proces z příkazového řádku CDB, zadejte možnost -pv, možnost -p a ID procesu v následující syntaxi.

cdb -pv -pProcessID

Pokud chcete neinvazivně ladit spuštěný proces zadáním názvu procesu, použijte místo toho následující syntaxi.

cdb -pv -pnProcessName

Existuje několik dalších užitečných možností příkazového řádku. Další informace o syntaxi příkazového řádku naleznete v tématu CDB Command-Line Možnosti.

okno příkazů CDB

Pokud je ladicí program již aktivní, můžete provést neinvasivní ladění spuštěného procesu spuštěním příkazu .attach -v (Připojení k procesu).

Příkaz .attach můžete použít, pokud ladicí program již invazivně ladí jeden nebo více procesů.

Pokud je příkaz .attach -v úspěšný, ladicí program začne ladit zadaný proces při příštím vydání příkazu k provedení. Vzhledem k tomu, že provádění není povoleno během neinvasivního ladění, ladicí program nemůže neinvasivně ladit více než jeden proces najednou. Toto omezení také znamená, že použití příkazu .attach -v může znamenat, že stávající invazní ladicí relace bude méně užitečná.

vytvoření nového procesu

CDB může spustit aplikaci v uživatelském režimu a pak aplikaci ladit. Aplikace je určena názvem. Ladicí program se také může automaticky připojit k dětským procesům (další procesy, které spustil původní cílový proces).

Procesy, které ladicí program vytvoří (označované také jako vytvořené procesy), se chovají mírně jinak než procesy, které ladicí program nevytvoří.

Místo standardního rozhraní API haldy používají procesy, které ladicí program vytvoří, speciální ladicí haldu. Můžete přinutit vytvořený proces, aby používal standardní haldu místo ladicí haldy, pomocí proměnné prostředí _NO_DEBUG_HEAP nebo volby příkazového řádku -hd .

Vzhledem k tomu, že cílová aplikace je podřízený proces ladicího programu, dědí oprávnění ladicího programu. Toto oprávnění může cílové aplikaci povolit, aby prováděla určité akce, které nemohla provést jinak. Cílová aplikace může mít například vliv na chráněné procesy.

V okně příkazového řádku můžete při spuštění CDB vytvořit nový proces. Zadejte následující příkaz.

cdb [-o]ProgramName[Argumenty]

Možnost -o způsobí, že ladicí program se připojí k podřízeným procesům. Existuje několik dalších užitečných možností příkazového řádku. Další informace o syntaxi příkazového řádku naleznete v tématu CDB Command-Line Možnosti.

Pokud ladicí program již ladí jeden nebo více procesů, můžete vytvořit nový proces zadáním příkazu .create (Vytvořit proces).

Ladicí program vždy spustí více cílových procesů současně, pokud některá z jejich vláken nejsou zmražena nebo pozastavena.

Pokud je příkaz .create úspěšný, ladicí program vytvoří zadaný proces při příštím vydání příkazu spuštění ladicího programu. Pokud tento příkaz použijete několikrát za sebou, musí být spuštění požadováno ladicím programem tolikrát, kolikrát tento příkaz používáte.

Počáteční adresář aplikace můžete řídit pomocí příkazu .createdir (Set Created Process Directory) před .create. Pomocí příkazu .createdir -I nebo volby příkazového řádku -noinh můžete určit, jestli cílová aplikace dědí popisovače ladicího programu.

Ladění podřízených procesů můžete aktivovat nebo deaktivovat pomocí příkazu .childdbg (ladění podřízených procesů).

opětovné připojení k procesu

Pokud ladicí program přestane reagovat nebo se zablokuje, můžete k cílovému procesu připojit nový ladicí program. Další informace o tom, jak připojit debugger v této situaci, viz Opětovné připojení k cílové aplikaci.