Удалённая отладка

Автор: Александр Шаргин
Источник: RSDN Magazine #0
Опубликовано: 27.01.2002
Версия текста: 1.0
Настройка удалённой машины
Установка отладочного монитора
Настройка отладочного монитора
Настройка локальной машины
Настройка Visual C++
Настройка проекта
Запуск отладки
Возвращение в нормальный режим работы

Иногда возникают ситуации, когда окно отладчика мешает отлаживать программу. Например, это относится к отладке кода рисования и кода активации окна. В случае с рисованием иногда удаётся решить проблему, расположив окна приложения и отладчика так, чтобы они не перекрывались. Но если отлаживается полноэкранное DirectX-приложение, этот простой приём не помогает.

Существует более радикальное решение, которое поможет решить эти и многие другие проблемы - удалённая отладка. Для удалённой отладки необходимы две машины, которые могут взаимодействовать между собой по протоколу TCP/IP (Visual C++ не поддерживает другие протоколы). Отлаживаемая программа будет выполняться на одной машине, отладчик - на другой. На одной машине с отлаживаемым приложением будет работать отладочный монитор (remote debug monitor), небольшая программа, контролирующая его выполнение и взаимодействующая с отладчиком через сеть.

Будем называть машину, на которой работает отладчик Visual C++, локальной, а машину, на которой выполняется отлаживаемое приложение, удалённой.

Настройка удалённой машины

Установка отладочного монитора

Отладочный монитор состоит из нескольких файлов, который входят в стандартную поставку Visual C++. Эти файлы необходимо скопировать на удалённую машину. Список файлов приведён в таблице 5.

ФайлыКаталог на локальной машинеКаталог на удалённой машине
msvcmon.exe, tln0t.dll, dm.dll, msdis110.dll%Visual Studio%\Common\MSDev98\BinЛюбой каталог
msvcrt.dll, msvcp60.dll%SystemRoot%\System32%SystemRoot%\System32
psapi.dll (нужен только под Windows NT/2000)%SystemRoot%\System32%SystemRoot%\System32
Таблица 5. Файлы отладочного монитора

Кроме отладочного монитора, на удалённую машину необходимо скопировать проект, который вы будете отлаживать. Он должен быть собран в отладочной конфигурации. Можно разместить его в любом каталоге.

Настройка отладочного монитора

Для настройки отладочного монитора необходимо проделать следующие действия.

  1. Запустите файл msvcmon.exe на удалённой машине.
  2. Нажмите на кнопку Settings. Раскроется диалоговое окно настроек (рис. 11).
  3. Введите в поле Target machine name or address имя или IP-адрес локальной машины. Нажмите OK.


Рисунок 11. Настройка отладочного монитора

Настройка локальной машины

Настройка Visual C++

Настройка Visual C++ ничем принципиально не отличается от настройки отладочного монитора. Вам нужно проделать следующие шаги.

  1. Выберите команду Build->Debugger Remote Connection. Откроется окно Remote Connection. Выберите в нём платформу (Platform: Win32) и соединение (Connection: Network (TCP/IP)).
  2. Нажмите кнопку Settings.... Появится диалог, очень похожий на диалог настроек отладочного монитора. Введите в поле Target machine name or address имя или IP-адрес удалённой машины. Нажмите OK.
  3. Закройте диалог Remote Connection.

Настройка проекта

Теперь откройте проект. Вызовите настройки отладки (Project->Settings, закладка Debug) и перейдите в категорию General. Здесь вам нужно указать путь к exe-файлу на удалённой машине. Если на локальной машине проект находится в каталоге C:\Projects\Proj1, а на удалённой машине - в каталоге E:\Proj1, то окно настройки должно выглядеть так (рис. 12).


Рисунок 12. Настройка проекта

Запуск отладки

Запустите отладочный монитор на удалённой машине и нажмите кнопку Connect.... Монитор перейдёт в состояние ожидания соединения, о чём и сообщит в окне Connecting... (рис. 13).


Рисунок 13. Отладочный монитор в ожидании соединения

Теперь запустите отладку. Для этого используйте на локальной машине команды из меню Build->Start Debug. Отладчик установит соединение с монитором на удалённом компьютере и получит контроль над отлаживаемой программой. Осталось проделать только один шаг – задать местонахождение DLL, используемых удалённым приложением, на локальном компьютере. Это утомительный процесс, но его достаточно проделать всего один раз. Для каждой DLL будет появляться отдельное окно (рис. 14).


Рисунок 14. Окно Find Local Module

В верхней части окна показано имя DLL на удалённом компьютере. Введите имя её локального аналога или найдите его, используя кнопку Browse.

Вот и всё. Теперь процесс отладки будет проходить, как обычно, с той разницей, что отладчик и отлаживаемый процесс находятся на разных машинах. Вы сможете ставить точки останова, наблюдать за состоянием программы в отладочных окнах, выполнять программу в пошаговом режиме – словом, делать всё, что мы уже изучили. Сеанс отладки завершится, когда отлаживаемая программа прекратит работу, или по команде Stop Debugging.

После завершения сеанса отладки отладочный монитор останется в состоянии ожидания нового соединения, так что можно немедленно начать ещё один сеанс. Чтобы закрыть монитор, нажмите кнопку Disconnect в окне Connecting, а затем кнопку Exit.

ПРИМЕЧАНИЕ

Все рассмотренные выше действия вы можете проделать и на одной машине. При этом нужно указать в качестве имени локальной и удалённой машины localhost, а пути к проекту на локальной и удалённой машине должны совпадать.

Возвращение в нормальный режим работы

Чтобы вернуть Visual C++ в нормальный режим работы, просто вызовите диалог Build->Debugger Remote Connection и установите режим Connection: Local.


Эта статья опубликована в журнале RSDN Magazine #0. Информацию о журнале можно найти здесь