Использование Remote Debugging
Оформил: DeeCo
Автор: Андрей Бороздин
Довольно часто в КГ в рубрике "Программирование" можно встретить советы
для начинающих программистов в среде Delphi. Однако порой газету читают и
законченные программеры. Именно для них, а также для тех, кто уже имеет
определенный опыт программирования, и предназначена эта
статья.
Не часто, но бывает так, что программа на твоем
компьютере, где стоит среда разработки, запускается и работает замечательно, а
вот на другой машине, например, на машине клиента, возникают какие-нибудь
непонятные ошибки. Существует несколько способов отладки таких программ.
Во-первых, можно поставить среду разработки пользователю на машину и там
попробовать отладить программу. Однако этот вариант вряд ли можно считать
удачным и отличающимся изяществом. К тому же пропадет чистота эксперимента:
инсталляция Delphi может заменить какие-нибудь старые системные библиотеки
Windows более новыми, после чего ошибка в программе может уже и не возникнуть.
К тому же может помешать отсутствие свободного пространства на диске или
нежелание пользователя. Следующий наиболее простой и незатейливый вариант —
это в той части программы, где, как вы предполагаете, находится ошибка,
расставить функции MessageBox (или ShowMessage) с каким-нибудь сообщением и,
таким образом, более четко определить место возникновения ошибки. Этот вариант
прост, как все гениальное, но обладает рядом существенных недостатков: 1.
Это довольно долго и утомительно. Каждый раз приходится убирать старые функции
и расставлять новые, перекомпилировать программу и копировать ее на машину
клиента. 2. Ошибка может возникать в том месте, где поставить свою функцию
весьма непросто. Например, в одном из стандартных модулей Delphi. 3. Ну и,
наконец, можно просто банально забыть убрать какой-нибудь из MessageBox'ов.
Сам так не раз прокалывался. Однако в ряде случаев этот вариант может
оказаться единственно возможным. Еще один вариант отладки таких программ
предназначен для тех, у кого рабочая машина и машина клиента находятся в
локальной сети. В состав инсталляции Delphi входит небольшая, но
очень полезная утилита — Remote Debugging. Ее инсталляция находится в папке
rdebug. Назначение Remote Debugging, как следует из названия, — это удаленная
отладка программ. Как раз наш случай, лучше и не придумаешь. Но
прежде чем воспользоваться всеми прелестями удаленной отладки программы в
среде Delphi, Remote Debugging надо скопировать на машину пользователю,
проинсталлировать и запустить. После чего в System Tray'е появится изображение
зеленого жучка. Вернемся к нашему проекту. В опциях проекта (Project|Options)
необходимо произвести следующие изменения: 1. На вкладке Linker включить
опцию Include remote debug symbols. 2. На вкладке Directories/Conditionals
в поле Output directory необходимо указать путь к общедоступной папке на
машине клиента (с именем машины). Если сделать это затруднительно, то можно
указать папку на своей машине, а полученные после компиляции файлы с
расширениями exe и rsm каждый раз копировать на машину клиента. 3. Нажмите
кнопку ОК. Далее перейдем к параметрам, с которыми будет запускаться
программа (Run|Parameters). На вкладке Remote необходимо указать следующие
данные: 1. В поле Remote Path указать путь и имя файла на удаленной машине,
где находится исполняемый файл, с сетевым именем удаленной машины. 2. В
поле Remote Host надо указать сетевое имя удаленной машины или ее IP
адрес. 3. Далее можно сделать следующее: Включить опцию Debug Project on
remote machine и нажать кнопку ОК. Тогда после выполнения команды Run (F9) вы
запустите сессию удаленной отладки. Или так: Нажать кнопку Load, чтобы
сразу начать сессию удаленной отладки. Разумеется, на удаленной машине уже
должны быть исполняемый файл (.exe) и файл для удаленной отладки
(.rsm). После всех этих нехитрых манипуляций с настройками проекта и
параметрами запуска на удаленной машине должна запуститься программа, а Delphi
— перейти в состояние отладки. Далее удаленная отладка программы ничем не
отличается от обычной отладки любой программы. Ну, вот, пожалуй, и все.
Успешной отладки, господа программисты!
|