GUI отладчик для Harbour

1. Введение

Отладчик состоит из двух частей:

  1. Библиотека hwgdebug.lib, которая должна быть прилинкована к приложению, которое вы собрались отлаживать, вместо стандартной hbdebug.lib. Ее исходники находятся в hwgui/source/debug, она является частью HwGUI проекта, но не содержит в себе вызовов HwGUI функций и классов и поэтому может использоваться и с консольными приложениями, и с GUI приложениями, собранными при помощи любых других GUI библиотек.

  2. Исполняемый модуль hwgdebug.exe - собственно, сам отладчик - отдельная ( в отличие от стандартного, встроенного в отлаживаемое приложение ) GUI программа, написанная на Harbour+HwGUI. Его исходники находятся в hwgui/utils/debugger. Поскольку HwGUI - кроссплатформенная библиотека, исполняемый модуль может быть собран и под Windows, и под другой ОС, где есть GTK ( например, Linux ).

Отладчик связывается с отлаживаемой программой посредством специальных файлов, которые могут быть расположены в любом удобном месте. Поэтому отлаживаемая программа может физически находиться на другом компьютере и даже быть собрана на другой ОС. Таким образом, мы можем, используя Windows версию hwgdebug.exe на своем компьютере, отлаживать программу, работающую на другом компьютере в сети под управлением Linux или, например, OS2.

Такой подход позволяет, в частности, реализовать отладку приложения в IDE - дарю эту идею разработчикам IDE :).

Исходные файлы отладчика, как уже говорилось, находятся в составе исходников HwGUI, бинарники ( библиотеку и отладчик ) вы найдете в бинарных дистрибутивах HwGUI - см. соответствующую страницу. Кроме того, вы можете скачать бинарники отладчика в виде отдельного пакета hwgdebug-2.04.zip, в него входят библиотеки для Borland C и Mingw и исполняемый файл - как вы понимаете, не имеет никакого значения, чем он собран, и даже - на каком языке написан.

Вот как он может выглядеть:


2. Как собрать приложение и запустить его на отладку

Собирается приложение таким же образом, как и раньше, как со стандартным отладчиком. Мы добавляем ключ -b к вызову компилятора Harbour и добавляем библиотеку отладчика hwgdebug.lib в список библиотек для линкера. Стандартная hbdebug.lib тоже должна быти прилинкована, но она должна быть в списке после hwgdebug.lib.

Запустить приложение на отладку можно несколькими способами:

  1. Как и раньше, просто запустив приложение. При старте оно попытается найти и запустить отладчик. Чтобы это получилось, он должен быть расположен или в рабочем каталоге приложения, или где нибудь в доступном месте ( куда указывает переменная окружения PATH ). Можно указать местоположение отладчика в специальном файле hwgdebug.info, но об этом позже. Если отладчик не будет найден, программа выдаст сообщение "Hwgdebug isn't available..." и ее работа продолжится без отладчика.

  2. Запустить сам отладчик и затем из него запустить приложение на отладку, используя меню File/Debug program.

  3. Запустить отладчик, указав имя отлаживаемой программы и параметры, передаваемые программе, в командной строке, например:

    hwgdebug.exe c:\myapps\someapp.exe param1 param2 ...

    При этом, как и в предыдущем случае, приложение запустится на отладку сразу же.

  4. Запустить отладчик, указав в командной строке опцию -w с именем каталога, доступного для чтения/записи и ему, и отлаживаемой программе, например:

    hwgdebug.exe h:\shared\

    а потом запустить отдельно отлаживаемую программу, рядом с которой должен находиться файл hwgdebug.info с указанием того же каталога. Именно этот режим позволяет отлаживать программу удаленно.

3. Использование hwgdebug.info

В рабочем каталоге отлаживаемой программы можно разместить файл hwgdebug.info и указать в нем некоторые параметры для запуска отладчика, а именно:

            dir = d:/shared
            Debugger = c:\tools\hwgdebug.exe
            RunAtStart = On
    

Dir - имя каталога для хранения временных файлов, связывающих программу с отладчиком, этот каталог должен быть доступен для чтения/записи и программе, и отладчику, он может располагаться в любом удобном месте в сети. Указать этот параметр необходимо при запуске отладчика по варианту 4 ( см. выше ).

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

RunAtStart - если эта опция опущена или установлена в Off, отладка стартует с первой исполняемой строчки программы. Если же она установлена в On, то она стартует как в стандартном отладчике - в месте программы, где предварительно поставлены Altd(2); Altd().


4. Отладка

Если отладчик и ваша программа запустились нормально, между ними установлено соединение и программа остановилась ( на первой строчке или после Altd() ), в заголовке окна отладчика появится имя соответствующего prg модуля и номер строки, где произошла остановка, в главном окне отладчика должен появиться текст этого prg. Если в заголовке все есть, а в окне текста нет - значит, prg не найден ( он расположен в другом каталоге ) и вам надо указать путь к нему с помощью меню File/Set path.

Основные функции отладчика - те же, что и в стандартном ( можут, их немного меньше на данный момент ) и работают они примерно так же:

Команды Go, Step, Trace, To cursor, Next Routine, Animate, установка и удаление точек останова ( для этого можно дважды щелкнуть по соответствующей строчке ), просмотр Workareas - для них предусмотрены те же горячие клавиши.

Просмотр переменных - local, private, public, static, установка так называемых Watch - выражений, значения которых вычисляются при каждой итерации, просмотр стека вызова процедур ( дважды щелкнув по любой из них, мы переключаем окно с текстом программы на эту процедуру ).

Record Inspector - просмотр текущей записи открытой базы данных, для его вызова жмем кнопку Inspect в просмотровщике Workareas, или вводим команду :record ( см.ниже ).

Object inspector - просмотр переменных и методов выбранного объекта, для его вызова щелкаем дважды ( или жмем Enter ) по соответствующей строчке в просмотровщике переменных, или вводим команду :inspect ( см.ниже ).

Array inspector - просмотр переменных и методов выбранного массива, для его вызова щелкаем дважды ( или жмем Enter ) по соответствующей строчке в просмотровщике переменных, или вводим команду :inspect ( см.ниже ).

Вычисление выражений по ходу отладки - вводите выражение в окне ввода в нижней части главного окна отладчика и жмите кнопку OK или клавишу ENTER - результат должен появиться в окне чуть повыше. Пользуясь кнопками слева от OK или клавишами Up, Down, можно перемещаться по списку ранее введенных выражений ( при этом результат соответствующего выражения на тот момент, когда оно выполнялось, станет текущей строкой в окне выше. Можно перемещаться и по окну результатов выполнения, при двойном щелчке по любой строчке в окне ввода появится соответствующее этому результату выражение.

В этом окне можно вводить и специальные команды, они должны начинаться с двоеточия. К настоящему моменту реализованы две команды:

            :record [<cAlias>]
            :inspect <cVarName>
    

Команда :record открывает Record Inspector - диалоговое окно со списком всех полей текущей записи базы данных, определяемой алиасом <cAlias>. Если алиас не указан, то выводится запись текущей рабочей области.

Команда :inspect открывает Object Inspector или Array Inspector, в зависимости от типа переменной <cVarName>, - диалоговое окно со списком переменных и методов объекта с именем <cVarName>, или, соответственно, элементов массива.

Можно вводить не всю команду, а только первые ее символы, даже всего один. Таким образом, чтобы посмотреть текущую запись из текущей рабочей области, достаточно ввести :r.

Шрифт ( установленный с помощью пункта меню Options/Font ) и путь к исходникам можно сохранить в конфигурационном файле с помощью Options/Save settings. Этот конфигурационный файл называется hwgdebug.xml и находится в том же каталоге, что и исполняемый файл hwgdebug.exe. В этом же файле можно сохранить точки останова (Options/Save breakpoints) с тем, чтобы в следующий раз при отладке программы не устанавливать их по одной, а восстановить все сразу (Options/Load breakpoints). Точки останова для каждой отлаживаемой программы хранятся отдельно, вы можете при необходимости изменить их перед запуском отладчика обычным текстовым редактором.

В одном каталоге с hwgdebug.exe должен находиться еще один xml файл - hilight.xml - конфигурационный файл для подсветки синтаксиса.



Комментариев:       ()       пред.    след.       Добавить комментарий
Длина комментария - не больше 4000 символов.
Ваше имя:

Адрес электронной почты:
(не предназначено к показу)
 
Введите текст с картинки: