Невозможно отладить драйвер ядра с помощью последовательного кабеля

Я новичок в драйверах. Я безуспешно пытался отладить драйвер ядра, используя последовательный COM-порт. Может ли кто-нибудь показать мне правильное направление, как решить проблему?

Я вижу следующие сообщения на консоли kd.

ОШИБКА: DavReadRegistryValues/RegQueryValueExW(4). WStatus = 127
ОШИБКА: DavReadRegistryValues/RegQueryValueExW(5). WStatus = 127
ОШИБКА: DavReadRegistryValues/RegQueryValueExW(6). Статус = 127

В это время я нажал Ctl^D и консоль kd, и я вижу
ЧТЕНИЕ: Тайм-аут.
ЧТЕНИЕ: Ожидание пакета типа 7
ЧТЕНИЕ: Тайм-аут.
ЧТЕНИЕ: Ожидание пакета типа 7.
ПРОЧИТАЙТЕ: Тайм-аут.

РЕДАКТИРОВАТЬ: Проблема исправлена ​​с помощью WinDbg. Я изменил скорость передачи данных на 115200 и вставил прерывание (Ctr ^ Break) до того, как целевая система полностью загрузится. Теперь я могу отлаживать код. Если я вставлю break после того, как целевая система полностью загрузится, я не смогу выполнить отладку. Я не знаю точной причины этого, но доволен текущей ситуацией.

Here are the things I have done

1) Prepared Target system for debug mode by editing the boot.ini file. Added     “/debugport=com1 /baudrate=57600”  to boot.ini

2) On Host system, started kd.exe and seeing the following output

C:\Program Files\Debugging Tools for Windows>kd.exe -k com:port=1,baud=57600
Microsoft (R) Windows Debugger  Version 6.6.0007.5
Copyright (c) Microsoft Corporation. All rights reserved.
Opened \\.\com1
Waiting to reconnect...

3) Rebooted Target system, system boots slowly than normal boot and I am seeing some     messages <<below>> on Host system console

4) At this time, If I press Ctl-C on KD console then Target system freezes (hangs)         and proceeds if I enter "g" at kd prompt.  This means that Target system     is going to debug mode

5) However After some time I am seeing the following message on the host machine console

ERROR: DavReadRegistryValues/RegQueryValueExW(4). WStatus = 127  
ERROR: DavReadRegistryValues/RegQueryValueExW(5). WStatus = 127  
ERROR: DavReadRegistryValues/RegQueryValueExW(6). WStatus = 127  

After the above message there are no messages appearing on kd console.

I searched internet for "ERROR: DavReadRegistryValues/RegQueryValueExW(6). WStatus =     127" but didn't get proper reason for it.

I pressed Ctl^D and kd console and I am seeing 
READ: Timeout.  
READ: Wait for type 7 packet  
READ: Timeout.  
READ: Wait for type 7 packet  
READ: Timeout.  

I have tried above steps with following options ..but no luck

I disabled firewall & antivirus software on both Host and Target systems. 
I unplugged and re-plugged serial cable connection between each trail
I have logged-in with Domain account local account with Admin rights 


Can someone show some light on how to proceed? Both systems are running on XP 32bit     SP3 OS.

Thanks King


person kingas    schedule 14.11.2009    source источник
comment
Привет, Кингас, ты это исправил?   -  person Wakan Tanka    schedule 05.05.2015


Ответы (2)


Вы уверены, что у вас хорошее последовательное соединение?

Кабель должен быть нуль-модемным кабелем — вы должны проверить это с помощью терминальной программы (без включенной отладки ядра на цели). Запустите программу (HyperTerminal или что-то еще) как на целевом, так и на хост-компьютере (помните, как я уже говорил, отладка ядра через этот порт не должна быть включена на целевом устройстве, иначе порт не может быть открыт).

Вы можете найти несколько ссылок на бесплатные терминальные программы (я не думаю, что Microsoft больше не предоставляет HyperTerminal после Vista) здесь: http://www.lvr.com/serport.htm#software

Введите несколько символов на одной машине и убедитесь, что они отображаются на другой стороне. Сделайте то же самое на другой машине.

Если вы не можете этого сделать, значит последовательного соединения нет, и вам придется приобрести нуль-модемный кабель или адаптер. Нет смысла пытаться заставить KD работать через это соединение, пока вы не сможете это сделать.

Кроме того, помните, что COM-порт, используемый для отладки ядра на цели, должен быть стандартным UART семейства 8250 (в настоящее время обычно 16550 или лучше, и обычно встроен в набор микросхем материнской платы). Это не может быть USB-разъем последовательного порта (хотя на стороне хоста такой тип будет работать нормально, так как на хосте kd.exe является обычной программой Win32).

Редактировать:


Если это не проблема последовательного подключения, проблема может заключаться в том, что ваша цель не поддерживает настройку с использованием boot.ini. Начиная с Vista, параметры загрузки задаются с использованием «базы данных конфигурации загрузки» (BCD), которая управляется с помощью программы, подобной bcdedit.exe. К сожалению, настроить систему с помощью BCDedit гораздо сложнее, чем просто отредактировать простой текстовый файл, например boot.ini.

Вы должны прочитать раздел справки отладчика «Настройка программного обеспечения на целевом компьютере»; в частности, часть «Использование параметров загрузки». там есть подробности о том, как можно использовать bcdedit для включения отладки в Vista и более поздних системах.

person Michael Burr    schedule 14.11.2009
comment
Спасибо за быструю информацию. Я отключил режим отладки ядра в целевой системе и проверил, что последовательный кабель RS232 исправен, с помощью программы HyperTerminal. Я могу отправлять символы с хоста на целевую систему и в вв. Обе системы работают под управлением ОС Windows XP 32bit SP3. COM-порты являются частью материнской платы в обеих системах. Я точно не знаю о спецификации UART. Я постараюсь получить некоторую информацию. Есть ли другое предложение, которое я могу попробовать? Спасибо, король - person kingas; 15.11.2009
comment
Если вы не используете USB-устройство с последовательным портом, аппаратное обеспечение COM-порта должно быть в порядке — вам не нужно определять фактический номер детали UART. Я просто пытался подчеркнуть, что это не может быть последовательный порт USB на цели. - person Michael Burr; 15.11.2009
comment
Извините, я пропустил строку о том, что обе системы работают под управлением 32-разрядной версии WinXP SP3. При повторном чтении я не вижу упомянутой опции /debug boot.ini - это в записи boot.ini? - person Michael Burr; 15.11.2009
comment
Я добавил «/debugport=com1/baudrate=57600» в файл boot.ini в целевой системе. Нужно ли добавлять параметр /debug? - person kingas; 15.11.2009
comment
Да, я использую системы Win XP, а не Vista. - person kingas; 15.11.2009
comment
Я никогда не пробовал его без (кроме, может быть, случайно). У меня нет машины, на которой я могу это проверить, но я уверен, что это необходимо и не подразумевается наличием '/debugport'. - person Michael Burr; 15.11.2009
comment
Михаил, Спасибо за помощь. Как я могу заставить работать отладку с помощью winDbg. Я точно не знаю, почему это не сработало с помощью kd. В настоящее время я продолжаю работать с WinDbg. - person kingas; 17.11.2009
comment
@kingas - это очень странно. Насколько мне известно, WinDbg и kd используют одну и ту же DLL-библиотеку механизма отладки, которая и должна отвечать за связь с целью (хотя, возможно, я не знаю, о чем говорю). Однако WinDbg и kd имеют точно такие же основные возможности, так что вы ничего не теряете (на самом деле командное окно в WinDbg по сути представляет собой консоль kd). - person Michael Burr; 17.11.2009

Еще одна вещь, которую вы можете проверить, чтобы увидеть, работает ли отладка на цели, — это вызвать kd -kl на цели — если он говорит вам, что отладка не включена, вы не настроили загрузку. ини правильно.

person Ana Betts    schedule 15.11.2009