多處理器語法
KD 和核心模式 WinDbg 支援多個處理器偵錯。 您可以在任何多處理器平臺上執行這種偵錯。
處理器編號為零到 n。
如果目前的處理器是處理器 0 (也就是說,如果它是目前導致偵錯工具處於作用中狀態的處理器) ,您可以檢查另一個非目前處理器 (處理器一到 n) 。 不過,您無法變更非目前處理器中的任何專案。 您只能檢視其狀態。
選取處理器
您可以使用 .echocpunum (顯示 CPU 號碼) 命令來顯示目前處理器的處理器編號。 此命令的輸出可讓您在核心偵錯提示字元中的文字處理多個處理器系統時立即告知。
在下列範例中,0:在kd >提示字元前面,表示您要對電腦中的第一個處理器進行偵錯。
0: kd>
使用 ~s (變更目前處理器) 命令在處理器之間切換,如下列範例所示。
0: kd> ~1s
1: kd>
現在您要對電腦中的第二個處理器進行偵錯。
如果您遇到中斷且無法瞭解堆疊追蹤,您可能必須變更多處理器系統上的處理器。 中斷可能會在不同的處理器上發生。
在其他命令中指定處理器
您可以在數個命令之前新增處理器編號。 除了~S命令之外,這個數位前面不會加上波浪 (~) 。
注意 在使用者模式偵錯中,會使用波浪線來指定執行緒。 如需此語法的詳細資訊,請參閱 執行緒語法。
處理器識別碼不需要明確參考。 相反地,您可以使用解析為對應于處理器識別碼的整數的數值運算式。 若要指出運算式應該解譯為處理器,請使用下列語法。
||[Expression]
在此語法中,方括弧是必要的, 而 Expression 代表解析為對應處理器識別碼之整數的任何數值運算式。
在下列範例中,處理器會根據使用者定義的虛擬暫存器值而變更。
||[@$t0]
範例
下列範例使用 k (Display Stack Backtrace) 命令來顯示處理器二的堆疊追蹤。
1: kd> 2k
下列範例使用 r (Registers) 命令來顯示處理器三的 eax 暫存器。
1: kd> 3r eax
不過,下列命令會提供語法錯誤,因為您無法變更目前處理器以外的處理器狀態。
1: kd> 3r eax=808080
中斷點
在核心偵錯期間, bp、bu、bm (設定中斷點) 和 ba (Access 中斷) 命令會套用至多處理器電腦的所有處理器。
例如,如果目前的處理器是三個,您可以輸入下列命令,將中斷點放在 SomeAddress。
1: kd> bp SomeAddress
然後,任何處理器 (不只是在該位址執行的處理器一個) ,都會造成中斷點設陷。
顯示處理器資訊
您可以使用 !running 擴充功能,在目的電腦上顯示每個處理器的狀態。 針對每個處理器, !running 也可以顯示進程式控制制區塊中的目前和下一個執行緒欄位, (中國B) 、16 個內建佇列的執行緒鎖定狀態,以及堆疊追蹤。