Если у вас возникнет необходимость в
отладке фрагмента программы, блокирующего буфер визуализации (или в ситуации,
когда буфер уже заблокирован функцией GetDC), придется воспользоваться
отладчиком, который не пользуется тем же экраном, что и ваша программа. В данном
приложении содержатся некоторые рекомендации по работе с отладчиком Microsoft
Visual C++ в удаленном режим, а также сведения об отладчике ядра
Microsoft Windows (Wdeb386), входящего в состав Win32 SDK. Разумеется,
существует много других отладчиков, которыми вы также можете пользоваться,
однако при подготовке программ для этой книги я остановил свой выбор на двух
выше упомянутых.
Удаленная отладка в Visual C++
Приведенные ниже инструкции предполагают,
что вы установили Microsoft Windows 95 на обоих компьютерах - на рабочем
(ведущем) и на тестовом (ведомом). Кроме того, вы должны установить Visual C++
на ведущем компьютере, соединить ПК посредством локальной сети и установить стек
протокола TCP/IP. Условные имена ведущий и ведомый следует заменить именами
ваших компьютеров.
1. На ведомом компьютере создайте каталог
TEST и задайте его совместное использование с именем TEST и полным доступом без
пароля.
2. Скопируйте перечисленные ниже файлы из
соответствующего каталога ведущего компьютера (Msdev\bin или WindowsVSystem) в
\\TARGET\TEST (здесь и в дальнейшем TARGET заменяется именем ведомого
компьютера):
Msvcmon.exe, Msvcrt40.dll, TInOt.dll,
DmnO.dll. Эти файлы необходимы для проведения сеансов отладки на ведомом
компьютере.
3. Скопируйте ЕХЕ-файл отлаживаемой
программы и все необходимые DLL-библиотеки в \\TARGET\TEST.
4. Запустите на ведущем компьютере Visual
C++ и выполните команду Tools Remote Connection. В окне диалога Remote
Connection выберите строку Network (TCP/IP) и нажмите кнопку Settings.
5. В окне диалога Win 32 Network (TCP/IP)
Settings укажите имя ведомого компьютера или его IP-адрес (например,
199.99.99.9) и введите пароль (например, DEBUG). Вы обязаны заполнить поле с
паролем. Нажмите кнопку ОК во всех окнах диалога.
6. На ведомом компьютере запустите
программу Msvcmon.exe, выберите из списка строку Network (TCP/IP) и нажмите
кнопку Settings.
7. В окне диалога Win 32 Network (TCP/IP)
Settings введите имя ведомого компьютера и пароль, заданный на шаге 5.
8. Нажмите кнопку Connect, чтобы начать
сеанс отладки на ведомом компьютере. До установления связи с ведущим компьютером
открывается окно диалога Connecting.
9. На ведущем компьютере выполните
команду Build Settings в среде Visual C++. В окне диалога Project Settings
выберите вкладку Debug. В полях Remote Executable Path и File Name
введите путь к исполняемому файлу, скопированному на ведомый компьютер на шаге 3
(например, \TEST\D3DEval.exe). Нажмите кнопку ОК.
10. Нажмите кнопку Go в Visual C++, чтобы
начать сеанс отладки. Вероятно, на экране появится окно диалога Find Local
Module, в котором следует указать местонахождение локальных DLL-библиотек.
Введите путь к каждой из них или снимите флажок, который предлагает вам
продолжить поиски.
На ведомом компьютере должно запуститься
ваше приложение. Ведущий компьютер будет использоваться для отладки. После
завершения работы выйдите из приложения и нажмите кнопку Disconnect в окне
диалога Connecting на ведомом компьютере. Не забудьте выбрать в списке Remote
Connection на ведущем компьютере строку Local.
В случае, если вам не приходилось ранее
пользоваться отладчиком Visual C++, подробное описание его работы можно найти в
документации.
Отладка с использованием Wdeb386
Если вы хотите получить полный контроль
над процессом отладки, вам придется воспользоваться отладчиком Wdeb386. Он
позволяет отлаживать любые программы для Windows 95 - приложения,
DLL-библиотеки, драйверы устройств, VxD и т. д. Отладчик входит в состав Win32
SDK, который включен в Microsoft Developer Network (II уровень).
Ниже приведены краткие инструкции по
запуску Wdeb386. Более подробное описание и перечень команд Wdeb386 можно найти
в документации по Win32 SDK.
1. Воспользуйтесь терминалом стандарта
RS232 или другим компьютером. Настройте терминал на скорость передачи данных
9600 или 19200 бод. Обычно я задаю для своего терминала 8-битные данные,
отсутствие контроля четности и 1 стоп-бит.
2. Подключите терминал к одному из
СОМ-портов основного компьютера через нуль-модемный кабель (подробное описание
кабельного соединения имеется в сопроводительной документации по установке
Wdeb386).
3. Запустите на основном компьютере
терминальное приложение (например, HyperTerminal) и убедитесь в правильности
пересылки текста на терминал. Наберите на терминале какой-нибудь текст и
проверьте, верно ли он передан на основной компьютер. Это позволит быть
уверенным в правильности аппаратных настроек.
4. На основном компьютере скопируйте все
DLL-библиотеки и символьные файлы из каталога Mstools\debug в Windows\System.
Вероятно, для этого вам придется загрузиться в режиме командной строки,
поскольку иначе не удастся заместить используемые файлы (такие, как Gdi32.dll).
Чтобы загрузить компьютер в режиме командной строки, нажмите клавишу F8 при
появлении сообщения Starting Windows во время загрузки и выберите из меню
команду Command Prompt Only или выполните команду Shut Down из меню Start
Windows 95 и выберите Restart The Computer in MS-DOS Mode.
5. Чтобы запустить сеанс отладки,
загрузитесь в режиме командной строки и запустите Wdeb386.ехе. Типичная команда
для его загрузки выглядит следующим образом: wdeb386.exe/c:1
/r:9600/s:myfite.sym/s:gdi.sym\windows\win.com.
После запуска отладчика загружается
Windows, и вы можете тестировать свое приложение. Чтобы перейти в отладчик,
нажмите Ctrl+C на терминале или Ctrl+Alt+SysRq на основном компьютере. Если на
вашем ПК имеется переключатель NMI (немаскируемого прерывания), он также может
использоваться для выхода в отладчик. После этого ваш основной компьютер
блокируется до выполнения очередной команды отладчика. Если вы не знаете, что
делать дальше, попробуйте команду д - сокращение от go.
Команды для загрузки многочисленных
символьных файлов удобно собрать в одном текстовом файле:
/s DDRAW16.SYM /s D3DRAMPF.SYM /s D3DRGBF.SYM
/s KRNL386.SYM /S D3DRM8F.SYM /s GDI.SYM /s D3DRM16F.SYM /s D3DRG8F.SYM /s
D3DRG16F.SYM /s D3DHALF.SYM
Сохраните этот список в файле, например
Debug, inf. Затем можно создать простой пакетный файл для запуска сеанса отладки
или ввести следующую командную строку:
wdeb386.exe c:l /r:9600
/f:debug.inf \windows\win.corn /
Подробные инструкции по работе с
отладчиком приведены в руководстве пользователя Wdeb386, входящем в Win32
SDK.
|