Dela via


Syntax för flera processorer

KD och kernelläge WinDbg stöder felsökning av flera processorer. Du kan utföra den här typen av felsökning på valfri plattform med flera processorer.

Processorer numreras noll till och med n.

Om den aktuella processorn är processor 0 (dvs. om det är processorn som för närvarande gjorde att felsökningsprogrammet var aktivt) kan du undersöka de andra icke-aktuella processorerna (processorer en till och med n). Du kan dock inte ändra något i processorer som inte är aktuella. Du kan bara se deras tillstånd.

Att välja en processor

Du kan använda kommandot .echocpunum (Visa CPU-nummer) för att visa processornumren för den aktuella processorn. Med utdata från det här kommandot kan du omedelbart se när du arbetar med ett system med flera processorer med hjälp av texten i kernel-felsökningsprompten.

I följande exempel 0: framför kd-prompten> anger du att du felsöker den första processorn på datorn.

0: kd>

Använd kommandot ~s (Ändra aktuell processor) för att växla mellan processorer, vilket visas i följande exempel.

0: kd> ~1s
1: kd>

Nu felsöker du den andra processorn på datorn.

Du kan behöva byta ut processorer i ett system med flera processorer om du stöter på ett avbrott och inte kan förstå stackspårningen. Pausen kan ha inträffat på en annan processor.

Ange processorer i andra kommandon

Du kan lägga till ett processornummer före flera kommandon. Det här talet föregås inte av en tilde (~), förutom i kommandot ~S .

Notera Vid användarlägesfelsökning används en tilde för att ange trådar. Mer information om den här syntaxen finns i Trådsyntax.

Processor-ID:t behöver inte uttryckligen hänvisas till. I stället kan du använda ett numeriskt uttryck som matchar ett heltal som motsvarar ett processor-ID. Om du vill ange att uttrycket ska tolkas som en processor använder du följande syntax.

||[Expression]

I den här syntaxen krävs hakparenteser och Uttryck står för alla numeriska uttryck som matchar ett heltal som motsvarar ett processor-ID.

I följande exempel ändras processorn beroende på värdet för ett användardefinierat pseudoregister.

||[@$t0]

exempel

I följande exempel används kommandot k (Display Stack Backtrace) för att visa en stackspårning från processor två.

1: kd> 2k 

I följande exempel används kommandot r (Registers) för att visa eax-registret för processor tre.

1: kd> 3r eax 

Följande kommando ger dock ett syntaxfel eftersom du inte kan ändra tillståndet för en annan processor än den aktuella processorn.

1: kd> 3r eax=808080 

Brytpunkter

Under kernel-felsökning gäller kommandona bp, bu, bm (Set Breakpoint) och ba (Break on Access) för alla processorer på en dator med flera processorer.

Om den aktuella processorn till exempel är tre kan du ange följande kommando för att placera en brytpunkt på SomeAddress.

1: kd> bp SomeAddress 

Sedan orsakar alla processorer (inte bara processor ett) som körs på den adressen en brytpunktsfälla.

Visa processorinformation

Du kan använda tillägget !running för att visa status för varje processor på måldatorn. För varje processor kan !running också visa aktuella och nästa trådfält från processkontrollblocket (PRCB), tillståndet för de 16 inbyggda köade spinlockarna och ett stackspår.

Du kan använda tilläggen !cpuinfo och !cpuid för att visa information om själva processorerna.