Kombinera den här metoden med fjärrfelsökning
Det är ibland användbart att styra användarlägesfelsökaren från kernelfelsökaren och använda användarlägesfelsökaren som en felsökarserver samtidigt.
Viktig
Det finns ytterligare viktiga säkerhetsöverväganden när du använder fjärrfelsökning, för mer information, inklusive information om hur du aktiverar säkert läge, finns i Säkerhet under fjärrfelsökning och Säkerhetsöverväganden för Windows Felsökningsverktyg.
Den här konfigurationen är till exempel användbar när dina användarlägessymboler finns på en symbolserver. I standardkonfigurationen för att styra felsökaren i användarläge från ett kernelfelsökare kan interaktionen mellan de två felsökarna leda till små brister i synkroniseringen, och dessa förfall kan förhindra symbolserverautentisering. Den mer komplexa konfiguration som beskrivs här kan undvika det här problemet.
Observera När du beskriver det här scenariot refererar målprogram till det användarlägesprogram som debuggas, måldator refererar till den dator som innehåller målprogrammet och CDB- eller NTSD-processen och värddator refererar till datorn som innehåller kernelfelsökaren.
Om du vill använda den här tekniken måste du göra följande:
Starta NTSD eller CDB på måldatorn med kommandoradsalternativen -ddefer och -server och ange önskade transportalternativ. Alternativet -server måste vara den första parametern på kommandoraden.
Du kan till exempel koppla till en process som körs med hjälp av följande syntax.
ntsd -server ServerTransport -ddefer [-y UserSymbolPath] -p PID
Eller så kan du starta en ny process som mål med hjälp av följande syntax.
ntsd -server ServerTransport -ddefer [-y UserSymbolPath] ApplicationName
Om du installerar detta som ett postmortem-felsökningsprogram använder du följande syntax. Observera att du måste redigera registret manuellt för att installera ett felsökningsprogram för postmortem som innehåller parametern -server. Mer information finns i Aktivera felsökning av postmortem.
ntsd -server ServerTransport -ddefer [-y UserSymbolPath]
Information om tillgängliga transportalternativ finns i Aktivera en felsökningsserver.
Starta WinDbg eller KD på värddatorn, som om du skulle felsöka måldatorn, men bryt inte in i måldatorn. Använd följande syntax om du vill använda WinDbg.
windbg [-y KernelSymbolPath] [-k ConnectionOptions]
Mer information om det här steget finns i Live Kernel-Mode Felsökning med WinDbg (klassisk)
.
Starta WinDbg eller CDB som en felsökningsklient med samma transportalternativ som används för att starta servern. Den här felsökningsklienten kan köras antingen på värddatorn eller på en tredje dator.
cdb -remote ClientTransport
Mer information om det här steget finns i Aktivera en felsökningsklient.
När felsökarna körs och kommandot
Input>
visas i kernelfelsökaren använder du kommandot .sleep (Pausa felsökningsprogram) för att pausa felsökningarna och låta måldatorn köras i några sekunder. Detta ger måldatorn tid att bearbeta fjärrtransportprotokollet och upprätta anslutningen mellan fjärrservern i användarläge och fjärrklienten.
Om du använder CDB som felsökningsprogram i användarläge förblir kommandotolkens fönster som är associerat med CDB låst och otillgängligt medan felsökningen fortsätter. Om du använder NTSD skapas inget ytterligare fönster, även om NTSD har ett process-ID associerat med det på måldatorn.
De fyra lägena och metoderna för att växla mellan dem som beskrivs i avsnittet Växlingslägen tillämpas i det här kombinationsscenariot, med följande skillnader:
Det finns två olika felsökningslägen i användarläge. När måldatorn körs styrs felsökningsservern av felsökningsklienten som i andra fjärrfelsökningssessioner. detta kallas fjärrstyrd felsökning av användarläge. När felsökaren i kernelläge är inbruten i måldatorn och
Input>
fråga visas, styrs felsökningsprogrammet i användarläge av kernelfelsökaren. Detta kallas kernelkontrollerad felsökning i användarläge.Dessa två lägen är aldrig tillgängliga samtidigt. När kernelfelsökaren bryts in i måldatorn, kan, även om felsökaren i användarläge är aktiv, inte måldatorn bearbeta fjärrtransportprotokollet, och därför kan inte felsökaren i användarläge ta emot fjärrinmatning via den här anslutningen.
Om dina användarlägessymboler finns på en symbolserver bör alla felsökningskommandon som kräver symbolåtkomst utfärdas i fjärrstyrt felsökningsläge för användare.
Om du vill växla från kernelkontrollerad felsökning i användarläge till fjärrstyrd felsökning i användarläge använder du kommandot .sleep (Pausa felsökningsprogram). När felsökningsprogrammet i användarläge väcks från viloläge via kommandot, kommer det att vara i fjärrstyrt användarfelsökningsläge.
Om du vill växla från fjärrstyrd felsökning i användarläge till felsökning i kernelläge anger du alla kommandon från
Input>
prompten. Om den här uppmaningen inte visas växlar du till felsökning i kernelläge och använder sedan kommandot g (Go) ikd>
prompten.
Internt ger ett felsökningsprogram i användarläge som startats med -ddefer första prioritet till indata från felsökningsklienten och andra prioritet för indata från kernelfelsökaren. Det kan dock aldrig uppstå en konflikt mellan samtidiga indata, eftersom fjärranslutningen inte är tillgänglig när kernelfelsökaren har brutit sig in på måldatorn.