Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
KD и WinDbg в режиме ядра поддерживают отладку нескольких процессоров. Эту отладку можно выполнить на любой многопроцессорной платформе.
Процессоры нумеруются от нуля до n.
Если текущий процессор является процессором 0 (то есть, если это процессор, который в настоящее время вызвал активность отладчика), можно проверить другие не текущие процессоры (процессоры один через n). Однако вы не можете изменить ничего в не текущих процессорах. Просматривать их состояние можно только.
Выбор обработчика
Для отображения номеров процессора текущего процессора можно использовать команду echocpunum (показать номер ЦП ). Выходные данные этой команды позволяют немедленно сообщать о работе с несколькими процессорами по тексту в командной строке отладки ядра.
В следующем примере 0: перед запросом kd> указывает, что выполняется отладка первого процессора на компьютере.
0: kd>
Используйте команду ~s (Изменить текущий процессор) для переключения между процессорами, как показано в следующем примере.
0: kd> ~1s
1: kd>
Теперь выполняется отладка второго процессора на компьютере.
Может потребоваться изменить процессоры в многопроцессорной системе, если вы столкнулись с сбоем и не можете понять трассировку стека. Возможно, разрыв произошел на другом процессоре.
Указание процессоров в других командах
Номер процессора можно добавить перед несколькими командами. Это число не предшествует тильде (~), за исключением команды ~S .
Заметка При отладке в пользовательском режиме тильда используется для указания потоков. Дополнительные сведения об этом синтаксисе см. в разделе "Синтаксис потока".
Идентификаторы процессора не нужно указывать явно. Вместо этого можно использовать числовое выражение, вычисляющееся в целое число, соответствующее идентификатору процессора. Чтобы указать, что выражение должно быть интерпретировано как обработчик, используйте следующий синтаксис.
||[Expression]
В этом синтаксисе квадратные скобки являются обязательными, и Выражение обозначает любое числовое выражение, разрешающее целое число, соответствующее идентификатору процессора.
В следующем примере обработчик изменяется в зависимости от значения определяемого пользователем псевдорегистрирующего регистра.
||[@$t0]
Примеры
В следующем примере используется команда k (Display Stack Backtrace) для отображения трассировки стека из процессора два.
1: kd> 2k
В следующем примере используется команда r (Registers) для отображения регистра eax процессора три.
1: kd> 3r eax
Однако следующая команда дает синтаксическую ошибку, так как невозможно изменить состояние процессора, отличного от текущего процессора.
1: kd> 3r eax=808080
Точки останова
Во время отладки ядра команды bp, bu, bm (Set Breakpoint) и ba (Break on Access) применяются ко всем процессорам нескольких процессоров.
Например, если текущий процессор равен трем, можно ввести следующую команду, чтобы поместить точку останова в SomeAddress.
1: kd> bp SomeAddress
Затем любой процессор (не только процессор один), который выполняется по этому адресу, вызывает ловушку точки прерывания.
Отображение сведений о обработчике
Вы можете использовать расширение !running для отображения состояния каждого процессора на целевом компьютере. Для каждого процессора !running может также отображать текущие и следующие поля потоков из блока управления процессами (PRCB), состояние 16 встроенных очередей спинлока и трассировку стека.
Расширения !cpuinfo и !cpuid можно использовать для отображения сведений о самих процессорах.