Dela via


Icke-invasiv felsökning (användarläge)

Om ett program i användarläge redan körs kan felsökaren felsöka det icke-genomgripande. Med icke-invasiv felsökning har du inte lika många felsökningsåtgärder. Du kan dock minimera felsökningsprogrammets interferens med målprogrammet. Icke-invasiv felsökning är användbart om målprogrammet har slutat svara.

Vid icke-invasiv felsökning kopplas inte felsökningsprogrammet till målprogrammet. Debuggern suspenderar alla måltrådar och har åtkomst till målets minne, register och annan information av detta slag. Felsökningsprogrammet kan dock inte styra målet, så kommandon som g (Go) fungerar inte.

Om du försöker köra kommandon som inte är tillåtna under icke-invasiv felsökning får du ett felmeddelande om att felsökningsprogrammet inte är kopplat, så processkörningen kan inte övervakas.

Välja Processen för att felsöka

Du kan ange målprogrammet efter process-ID (PID) eller processnamn.

Om du anger programmet efter namn bör du använda hela namnet på processen, inklusive filnamnstillägget. Om två processer har samma namn måste du använda process-ID:t i stället.

Mer information om hur du fastställer process-ID och processnamn finns i Hitta process-ID.

Information om hur du startar och stoppar en icke-invasiv felsökningssession finns i följande avsnitt:

CDB-kommandorad

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.

WinDbg-kommandorad

Om du inte vill felsöka en process som körs från WinDbg-kommandoraden anger du alternativet -pv, alternativet -p och process-ID i följande syntax.

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

windbg -pv -pnProcessName

Det finns flera andra användbara kommandoradsalternativ. Mer information om kommandoradssyntaxen finns i WinDbg Command-Line Alternativ.

WinDbg-meny

När WinDbg är i vilande läge kan du felsöka en process som körs icke-invasivt genom att klicka på Koppla till en process på Arkiv-menyn eller genom att trycka på F6.

När dialogrutan Bifoga till process visas markerar du kryssrutan Icke-invasiv. Välj sedan den rad som innehåller det process-ID och det namn som du vill använda. (Du kan också ange process-ID:t i rutan Process-ID.) Klicka slutligen på OK.

Kommandofönster för felsökningsprogram

Om felsökningsprogrammet redan är aktivt kan du på ett icke-invasivt sätt felsöka en process som körs genom att använda kommandot .attach -v (Attach to Process) i felsökningskommandofönstret.

Du kan använda kommandot .attach om felsökningsprogrammet redan felsöker en eller flera processer på ett invasivt sätt. Du kan använda det här kommandot i CDB om det är vilande, men inte i en vilande WinDbg.

Om kommandot .attach -v lyckas, felsöker felsökningsprogrammet den angivna processen nästa gång det utfärdar 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 med kommandot .attach -v kan det göra en befintlig invasiv felsökningssession mindre användbar.

Påbörja felsökningssessionen

Mer information om hur du påbörjar en felsökningssession finns i Felsökningsåtgärd.