Автор | Сообщение |
|
| moderator
|
Пост N: 633
Зарегистрирован: 06.07.06
|
|
Отправлено: 22.05.13 18:54. Заголовок: GUI отладчик для Harbour
Запостил эту тему сюда, поскольку отладчик работает как с GUI, так и с консольными приложениями и может служить полноценной заменой стандартному. Итак, в новый релиз HwGUI вошел 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. 2. Как собрать приложение и запустить его на отладку Собирается приложение таким же образом, как и раньше, как со стандартным отладчиком. Мы добавляем ключ -b к вызову компилятора Harbour и добавляем библиотеку отладчика в список библиотек для линкера, только теперь это не hbdebug.lib, а hwgdebug.lib. Запустить приложение на отладку можно несколькими способами: 1) Как и раньше, просто запустив приложение. При старте оно попытается найти и запустить отладчик. Чтобы это получилось, он должен быть расположен или в рабочем каталоге приложения, или где нибудь в доступном месте ( куда указывает переменная окружения PATH ). Можно указать местоположение отладчика в специальном файле hwgdebug.info, но об этом позже. Если отладчик не будет найден, программа выдаст сообщение "Hwgdebug isn't available..." и ее работа продолжится без отладчика. 2) Запустить сам отладчик и затем из него запустить приложение на отладку, используя меню File/Debug program. 3) Запустить отладчик, указав имя отлаживаемой программы в командной строке, например: hwgdebug.exe c:\myapps\someapp.exe При этом, как и в предыдущем случае, приложение запустится на отладку сразу же. 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 - для них предусмотрены те же горячие клавиши. Просмотр локальных переменных, установка так называемых Watch - выражений, значения которых вычисляются при каждой итерации, просмотр стека вызова процедур ( дважды щелкнув по любой из них, мы переключаем окно с текстом программы на эту процедуру ). Вычисление выражений по ходу отладки - вводите выражение в окне ввода в нижней части главного окна отладчика и жмите кнопку OK или клавишу ENTER - результат должен появиться в окне чуть повыше. Пользуясь кнопками слева от OK или клавишами Up, Down, можно перемещаться по списку ранее введенных выражений ( при этом результат соответствующего выражения на тот момент, когда оно выполнялось, станет текущей строкой в окне выше. Можно перемещаться и по окну результатов выполнения, при двойном щелчке по любой строчке в окне ввода появится соответствующее этому результату выражение. |
|
|
|
|
Ответов - 51
, стр:
1
2
3
All
[только новые]
|
|
|
| moderator
|
Пост N: 472
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.05.13 10:23. Заголовок: alkresin пишет: ост..
alkresin пишет: цитата: | осталась hb_processopen() |
| #xtranslate hb_processOpen( [<x,...>] ) => hb_OpenProcess( <x> )
|
|
|
|
| moderator
|
Пост N: 644
Зарегистрирован: 06.07.06
|
|
Отправлено: 29.05.13 11:46. Заголовок: Спасибо. Запостил вс..
Спасибо. Запостил все изменения на SVN, теперь hwgdebug.lib собирается и работает и под xHarbour.
|
|
|
|
| moderator
|
Пост N: 645
Зарегистрирован: 06.07.06
|
|
Отправлено: 29.05.13 14:52. Заголовок: Выложил новую версию..
Выложил новую версию отладчика 1.02 ( отдельный бинарный дистрибутив ) Основные изменения: - добавлена библиотека xHarbour/hwgdebug.lib - для xHarbour 1.2.1 + Bcc - теперь можно менять шрифт - измененный шрифт и путь к исходникам можно сохранить в hwgdebug.xml, который находится рядом с hwgdebug.exe ( Options/Save settings ) - Символы табуляции в исходных файлах заменяются при просмотре на пробелы.
|
|
|
|
| moderator
|
Пост N: 659
Зарегистрирован: 06.07.06
|
|
Отправлено: 05.06.13 09:00. Заголовок: Выложил новую версию..
Выложил новую версию отладчика 1.03 ( отдельный бинарный дистрибутив ) Кое-что подправлено, добавлена пара строчек для Minigui. Добавлена возможность сохранять и загружать точки останова. Они сохраняются в hwgdebug.xml, в секции, соответствующей имени отлаживаемой программы.
|
|
|
|
| постоянный участник
|
Пост N: 2840
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.06.13 13:11. Заголовок: alkresin пишет: доб..
alkresin пишет: цитата: | добавлена пара строчек для Minigui. |
| Спасибо БОЛЬШОЕ за вашу работу !!!
|
|
|
|
| moderator
|
Пост N: 661
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.06.13 12:58. Заголовок: Выложил новую версию..
Выложил новую версию - 2.00 Такой скачок в нумерации оттого, что изменения, действительно, существенные. Для просмотра исходников теперь используется не browse, а текстовый редактор ( правда, в readonly режиме ) с подсветкой синтаксиса. Кроме того, это окно сделано с закладками ( на основе tab'а ), так что можно одновременно держать открытыми несколько файлов и легко переключаться между ними. Чтобы легко найти текущую точку останова добавлен пункт меню Locate/Current position.
|
|
|
|
| |
Пост N: 872
Зарегистрирован: 11.06.10
|
|
Отправлено: 11.06.13 17:01. Заголовок: Александр, а будет л..
Александр, а будет ли возможность как у стандартного отладчика просмотр значений массивов, объектов. Сейчас, например, есть переменная b1 := {1,2,3}, через watch видим только b1 Array(3):{"N","N","N"} и тоже для объектов getlist Array(1):{"O"}?
|
|
|
|
| moderator
|
Пост N: 662
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.06.13 17:21. Заголовок: Да, конечно. Надо то..
Да, конечно. Надо только придумать наиболее подходящий интерфейс. А вообще напрашивается на базе этого дела небольшое IDE.
|
|
|
|
| moderator
|
Пост N: 663
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.06.13 11:46. Заголовок: Выложил 2.01 с мален..
Выложил 2.01 с маленьким исправлением + добавлена возможность при запуске hwgdebug.exe c именем отлаживаемой программы указать и параметры для этой программы.
|
|
|
|
| |
Пост N: 132
Зарегистрирован: 10.07.07
|
|
Отправлено: 13.06.13 13:43. Заголовок: alkresin пишет: Выл..
alkresin пишет: Для xHarbour осталась версия 1.03.
|
|
|
|
| moderator
|
Пост N: 665
Зарегистрирован: 06.07.06
|
|
Отправлено: 13.06.13 14:13. Заголовок: TimTim пишет: Для x..
TimTim пишет: цитата: | Для xHarbour осталась версия 1.03. |
| Не понял. Где указана версия для xHarbour ? Если вы о библиотеке xHarbour/hwgdebug.lib, то она действительно не изменилась, как не изменилась и hwgdebug.lib для Harbour. 2.01 - версия исполняемого файла hwgdebug.exe
|
|
|
|
|
| |
Пост N: 133
Зарегистрирован: 10.07.07
|
|
Отправлено: 13.06.13 16:19. Заголовок: Понял. Спасибо!..
Понял. Спасибо! Но у меня при попытке запустить отладчик выдается ошибка. Я думал это связано с библиотекой для xHarbour. Содержание error.log Error BASE/1132 Bound error: array access Called from \myapps\source\utils\codeedit\hcedit.prg->HCEDIT:MARKLINE(479) Called from \myapps\source\utils\codeedit\hcedit.prg->HCEDIT:SETCARETPOS(669) Called from \myapps\source\utils\codeedit\hcedit.prg->HCEDIT:GOTO(1052) Called from hwgdebug.prg->SETCURRLINE(730) Called from hwgdebug.prg->TIMERPROC(494) Called from hwgdebug.prg->(b)MAIN(218) Called from source\htimer.prg->HWG_TIMERPROC(60) Called from ->HWG_ACTIVATEMAINWINDOW(0) Called from source\hwindow.prg->HMAINWINDOW:ACTIVATE(292) Called from hwgdebug.prg->MAIN(220) HWGUI 2.16c Build 1002 Harbour 3.2.0dev (Rev. 18481) Date:06/13/13 Time:17:21:06
|
|
|
|
| moderator
|
Пост N: 668
Зарегистрирован: 06.07.06
|
|
Отправлено: 13.06.13 18:01. Заголовок: Странно. Не пойму чт..
Странно. Не пойму что-то, в какой ситуации такое могло произойти. А текст отлаживаемой программы перед этим отобразился ? Вы отладчик запускали и из него программу, или сразу программу ?
|
|
|
|
| |
Пост N: 134
Зарегистрирован: 10.07.07
|
|
Отправлено: 14.06.13 13:54. Заголовок: Ошибка происходит и ..
Ошибка происходит и при запуске программы и при запуске отладчика и из него программы. В обоих случаях текста отлаживаемой программы нет. Удается поработать в отладчике, если действовать так 1. Запустить отладчик 2. File->Open source file открываю основной модуль и он появляется в окне 3. File->Debug program После этого курсор на первом операторе основного модуля и можно по F8 отслеживать работу программы. Как только появляется вызов, скажем, какой-либо моей подпрограммы, в отладчике открывается вкладка Empty и текста в нем нет. Но если подгрузить соответствующий текст. то далее в отладчике можно следить за работой подпрограммы. Если при этом нажать F5, то отладчик закрывается и далее программа правильно отрабатывает. В тестовом примере используется моя библиотека (lib-файл). Попробую протестировать отладчик на тестовом примере без использования моей библиотеки.
|
|
|
|
| moderator
|
Пост N: 671
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.06.13 14:20. Заголовок: TimTim пишет: Ошибк..
TimTim пишет: цитата: | Ошибка происходит и при запуске программы и при запуске отладчика и из него программы. В обоих случаях текста отлаживаемой программы нет. |
| А в заголовке окна отладчика имя prg файла и номер строки есть ? Название вкладки - Empty ? цитата: | Как только появляется вызов, скажем, какой-либо моей подпрограммы, в отладчике открывается вкладка Empty и текста в нем нет. |
| Путь ( Set Path ) предварительно пробовали установить ? Если, кстати, сделать Save Settings, его при следующем вызове не придется вводить.
|
|
|
|
| |
Пост N: 135
Зарегистрирован: 10.07.07
|
|
Отправлено: 14.06.13 15:20. Заголовок: alkresin пишет: А в..
alkresin пишет: цитата: | А в заголовке окна отладчика имя prg файла и номер строки есть ? |
| Есть alkresin пишет: цитата: | Название вкладки - Empty ? |
| Да Если указать Set path и сделать Save Settings, то при запуске как программы, так и отладчика и из него программы тоже происходит ошибка, но вкладка уже имеет имя основного модуля и отображает только одну строку 9 return nil что судя по номеру к основному модулю не относится.
|
|
|
|
| |
Пост N: 136
Зарегистрирован: 10.07.07
|
|
Отправлено: 14.06.13 15:50. Заголовок: Склепал по быстрому ..
Склепал по быстрому новый проект для тестирования отладчика без моих библиотек. Отладчик и при запуске программы и при запуске отладчика и из него программы выдает вкладку с именем Empty, в заголовке окна отображается имя основного модуля и номер первого исполняемого оператора. Set path указан, т.е. есть в файле hwgdebug.xml, кот. находится в папке с отлаживаемой программой. Если подгрузить File->open source file, то отладка продолжается в нормальном режиме.
|
|
|
|
| moderator
|
Пост N: 672
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.06.13 16:12. Заголовок: Если указать Set pat..
цитата: | Если указать Set path и сделать Save Settings, то при запуске как программы, так и отладчика и из него программы тоже происходит ошибка, но вкладка уже имеет имя основного модуля и отображает только одну строку 9 return nil что судя по номеру к основному модулю не относится. |
| Может, отладчик находит у вас другой файл с тем же именем ? Хотя я отработал у себя такую ситуацию - все нормально, т.е. не вылетает... Попробуйте вот этот экземпляр: http://www.kresin.ru/down/hwgdebug.zip - я поставил там дополнительную проверку. цитата: | Set path указан, т.е. есть в файле hwgdebug.xml, кот. находится в папке с отлаживаемой программой. |
| hwgdebug.xml должен быть в одном каталоге с отладчиком, а не с отлаживаемой программой.
|
|
|
|
| |
Пост N: 137
Зарегистрирован: 10.07.07
|
|
Отправлено: 14.06.13 19:20. Заголовок: alkresin пишет: hwg..
alkresin пишет: цитата: | hwgdebug.xml должен быть в одном каталоге с отладчиком, а не с отлаживаемой программой. |
| там же находится и отладчик, т.е. в папке с отлаживаемой программой. alkresin пишет: цитата: | Попробуйте вот этот экземпляр |
| Попробовал, то же самое. Кстати, в readme.rus говорилось об использовании Altd() в отладке, попробовал, не проходит линковка - неразрешимая ссылка.
|
|
|
|
| moderator
|
Пост N: 673
Зарегистрирован: 06.07.06
|
|
Отправлено: 15.06.13 15:32. Заголовок: TimTim пишет: Попро..
TimTim пишет: Попробуйте еще один вариант ( по тому же адресу ). цитата: | Кстати, в readme.rus говорилось об использовании Altd() в отладке, попробовал, не проходит линковка - неразрешимая ссылка. |
| Хмм... Вообще-то Altd() - стандартная клипперовская функция. Неужели в xHarbour ее нет ?
|
|
|
Ответов - 51
, стр:
1
2
3
All
[только новые]
|
|