Поделиться через


Примеры сервера подключения KD

Предположим, что на сайте, где находится отлаживаемый компьютер, отсутствует специалист по отладке. Специалист по отладке просит кого-то на этом сайте подключить этот целевой компьютер к другому компьютеру с помощью отладочного кабеля.

Этот другой компьютер должен быть по IP-адресу 127.0.0.42. Кабель отладки подключает COM1 на этом компьютере к порту, который был включен для отладки на целевом компьютере. Сервер подключения KD запускается с помощью следующей команды:

E:\Debugging Tools for Windows> kdsrv -t tcp:port=1027

Затем в другом расположении специалист запускает WinDbg в качестве интеллектуального клиента с помощью следующей команды:

G:\Debugging Tools> windbg -k kdsrv:server=@{tcp:server=127.0.0.42,port=1027},trans=@{com:port=com1,baud=57600} -y SymbolPath

Путь к символам будет относительно компьютера, на котором запущен смарт-клиент.

Вот другой пример. В этом случае выбирается протокол NPIPE, а вместо WinDbg используется KD. Первый пользователь выбирает имя канала. Это может быть любая буквенно-цифровая строка, в данном примере KernelPipe. Первый пользователь открывает окно командной строки с повышенными привилегиями (запуск от имени администратора) и запускает сервер отладки, введя следующие команды:

E:\Debugging Tools for Windows> set _NT_DEBUG_PORT=com1
E:\Debugging Tools for Windows> kdsrv -t npipe:pipe=KernelPipe

Технический специалист войдет на клиентский компьютер с учетной записью, которая не имеет доступа к серверу. Но технический специалист знает имя пользователя и пароль для учетной записи, которая имеет доступ к компьютеру сервера. Имя пользователя для этой учетной записи — Contoso. Техник введет следующую команду:

net use \\BOX17\ipc$ /user:Contoso

При появлении запроса специалист вводит пароль для учетной записи Contoso.

Технический специалист не уверен, какое имя использовалось для именованного канала, поэтому он запрашивает 127.0.0.42 для серверов подключения KD:

G:\Debugging Tools> cdb -QR 127.0.0.42
Servers on 127.0.0.42:
Debugger Server - npipe:Pipe=MainPipe
Remote Process Server - npipe:Pipe=AnotherPipe
Remote Kernel Debugger Server - npipe:Pipe=KernelPipe

Показаны три трубы. Однако только один из них является сервером подключения KD, а остальные — сервером отладки и сервером обработки в пользовательском режиме. Техник вводит следующую команду, чтобы запустить смарт-клиент:

G:\Debugging Tools> kd -k kdsrv:server=@{npipe:server=127.0.0.42,pipe=KernelPipe},trans=@{com:baud=57600} -y SymbolPath

Обратите внимание, что, хотя скорость передачи данных указана, порт не указан. В результате отладчик по умолчанию будет использовать порт, указанный _NT_DEBUG_PORT на компьютере, где запущен KdSrv.