Felsöka en User-Mode process med CDB
Du kan använda CDB för att ansluta till en process som körs eller för att skapa och ansluta till en ny process.
Ansluta till en process som körs
Kommandoprompt
I ett kommandotolkfönster kan du ansluta till en process som körs när du startar CDB. Använd något av följande kommandon:
- cdb -pProcessID
- cdb -pnProcessName
där ProcessID är process-ID för en process som körs eller ProcessName är namnet på en process som körs.
Mer information om kommandoradssyntaxen finns i CDB-Command-Line Alternativ.
CDB-kommandofönster
Om felsökningsprogrammet redan felsöker en eller flera processer kan du ansluta till en process som körs med hjälp av kommandot .attach (Attach to Process).
Felsökningsprogrammet startar alltid flera målprocesser samtidigt, såvida inte vissa trådar är låsta eller pausade.
Om .attach-kommandot lyckas ansluter felsökningsprogrammet till den angivna processen nästa gång felsökningsprogrammet utfärdar ett körningskommando. Om du använder det här kommandot flera gånger i rad måste körning begäras av felsökaren så många gånger som du använder det här kommandot.
Att koppla till en process som körs på ett icke-invasivt sätt
Om du vill felsöka en process som körs och bara störa den minimalt i körningen bör du felsöka processen icke-invasivt.
Kommandotolk
Om du inte vill felsöka en process som körs från CDB-kommandoraden anger du alternativet -pv , alternativet -p och process-ID i följande syntax.
cdb -pv -pProcessID
Om du inte vill felsöka en process som körs genom att ange processnamnet använder du följande syntax i stället.
cdb -pv -pnProcessName
Det finns flera andra användbara kommandoradsalternativ. Mer information om kommandoradssyntaxen finns i CDB-Command-Line Alternativ.
CDB-kommandofönster
Om felsökningsprogrammet redan är aktivt kan du felsöka en process som körs icke-invasivt genom att ange kommandot .attach -v (Attach to Process).
Du kan använda kommandot .attach om felsökningsprogrammet redan felsöker en eller flera processer på ett invasivt sätt.
Om kommandot .attach -v lyckas, kommer debuggern att starta felsökning av den angivna processen nästa gång den utför ett körningskommando. Eftersom körning inte tillåts under icke-invasiv felsökning kan felsökaren inte samtidigt felsöka mer än en process. Den här begränsningen innebär också att användning av kommandot .attach -v kan göra en befintlig invasiv felsökningssession mindre användbar.
Skapa en ny process
CDB kan starta ett program i användarläge och sedan felsöka programmet. Programmet anges med namn. Felsökningsprogrammet kan också automatiskt ansluta till underordnade processer (ytterligare processer som den ursprungliga målprocessen startade).
Processer som felsökningsprogrammet skapar (kallas även för skapade processer) beter sig något annorlunda än processer som felsökaren inte skapar.
I stället för att använda standard-heap-API:et använder processer som felsökaren skapar en särskild felsöknings-heap. Du kan tvinga en process som skapats att använda standard-heapen i stället för felsöknings-heapen med hjälp av _NO_DEBUG_HEAP miljövariabeln eller kommandoradsalternativet -hd .
Dessutom, eftersom målprogrammet är en underordnad process i felsökningsprogrammet, ärver det också felsökarens behörigheter. Den här behörigheten kan göra det möjligt för målprogrammet att utföra vissa åtgärder som det inte kunde utföra annars. Målprogrammet kan till exempel påverka skyddade processer.
I ett kommandotolkfönster kan du skapa en ny process när du startar CDB. Ange följande kommando.
cdb [-o]ProgramName[Argument]
Alternativet -o gör att felsökningsprogrammet kopplas till underordnade processer. Det finns flera andra användbara kommandoradsalternativ. Mer information om kommandoradssyntaxen finns i CDB-Command-Line Alternativ.
Om felsökningsprogrammet redan felsöker en eller flera processer kan du skapa en ny process genom att ange kommandot .create (Skapa process).
Felsökningsprogrammet startar alltid flera målprocesser samtidigt, såvida inte vissa trådar är låsta eller pausade.
Om kommandot .create lyckas skapar felsökningsprogrammet den angivna processen nästa gång felsökningsprogrammet utfärdar ett körningskommando. Om du använder det här kommandot flera gånger i rad, måste utförandet begäras av felsökaren lika många gånger som du använder det.
Du kan styra programmets startkatalog med kommandot .createdir (Ange skapad processkatalog) innan .create. Du kan använda kommandot .createdir -I eller kommandoradsalternativet -noinh för att styra om målprogrammet ärver felsökarens referenser.
Du kan aktivera eller inaktivera felsökning av underordnade processer med hjälp av kommandot .childdbg (Debug Child Processes).
Ansluta till en process igen
Om felsökningsprogrammet slutar svara eller fryser kan du koppla ett nytt felsökningsprogram till målprocessen. Mer information om hur du kopplar ett felsökningsprogram i den här situationen finns i Ansluta till målprogrammet igen.