Форум » GUI » Отладка программы » Ответить

Отладка программы

krutoff: Кто чем отлаживается? Я попытался использовать в GUI режиме debug (altd), очень медленно, неудобно. Приходится подключать процедуру fDebug(...) и таким образом просматривать значения переменных после окончания программы. А вот качественный отладчик с трассировкой - это, наверное, в бесплатном варианте невозможно. А у кого какие методы, способы и инструменты отладки?

Ответов - 26, стр: 1 2 All

Andrey: Я пока пользуюсь MsgInfo().... Так неудобно ...

krutoff: 71 просмотр и только один ответ, неужели тема не актуальна?

Петр: krutoff пишет: Кто чем отлаживается? Ну я, к примеру, часто использую [url=http://technet.microsoft.com/ru-ru/sysinternals/bb896647(en-us).aspx]DebugView[/url] [pre2]#xtranslate __dbg( <fmt>, [<param,...>] ) => wapi_outputDebugString( ">> " + hb_StrFormat( <fmt>, <param> ) ) INIT PROCEDURE appInit // __dbg( "%1$s START", hb_progName() ) RETURN EXIT PROCEDURE appExit // __dbg( "%1$s EXIT", hb_progName() ) RETURN PROCEDURE Main(...) LOCAL nNum := 1.10 LOCAL lBool_1 := .f., lBool_2 := .t. __dbg( "nNum is %1$d", nNum ) __dbg( "nNum is %1$f", nNum ) __dbg( "lBool_1 is %1$d", lBool_1 ) __dbg( "lBool_2 is %1$d", lBool_2 ) RETURN[/pre2] С одинаковым успехом из PRG и C кода.


Andrey: Петр пишет: Ну я, к примеру, часто использую [url=http://tech........ Не получается собрать пример !!! Выдает ошибку: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_HB_FUN_WAPI_OUTPUTDEBUGSTRING' referenced from С:\DEBUGVIEW\TEST.OBJ Link error. Собираю: C:\DebugView>C:\MiniGui\BATCH\compile.bat test /CG Harbour MiniGUI 1.7 Extended Edition (Build 71) - 2009.07.30 Harbour 2.0.0beta2 (Rev. 11891) Может обновиться нужно ?

Петр: Andrey пишет: Может обновиться нужно ? Естественно - harbour 2 уже не beta, да и MiniGUI актуальная версия 1.79 А еще нужно подключать библиотеку hbwin/

PSP: Попробывал DebugView. Просто и эффективно. Спасибо.

Петр: PSP пишет: Попробывал DebugView. Просто и эффективно. Особенно если настроить фильтры/подсветку.. wapi_outputDebugString() - надстройка над Win API OutputDebugString(), которую в свою очередь используют стандартные средства трасировки xHarbour / Harbour. Если кто не верит может попробовать для xHb hb_OutDebug( "It's power xHarbour!") для hb 2.0 hb_setEnv( "HB_TR_WINOUT", "yes" ) hb_traceString( hb_strFormat( ">> %1$s is %2$s!", "Harbour", "cool!" ) ) Естественно пробовать нужно при запущенном DebugView или его аналоге (забыл название). Как видим, для hb 2 должна быть установлена переменная окружения HB_TR_WINOUT (что с успехом можно сделать програмно). И резюмируя - пользователям hb2 крайне желательно ознакомиться с функциями семейства hb_trace*. Оч-ч-ень неплохая функциональность скажу вам (правда я с ней пока ознакомился довольно таки поверхностно ). Любители xHb также могут активно использовать для отладки DebugView и hb_OutDebug*

Andrey: Ура, и у меня получилось... Только нужно запустить заранее DebugView.ехе получается такая картинка: Действительно, здорово.... А есть ли документация по DebugView ?

Петр: Andrey пишет: А есть ли документация по DebugView ? Странный вопрос.. Mеню Help->Help или F1

krutoff: Петр, спасибо большое, что поделился такой неоценимой информацией! Я сам пытался, просматривал исходники, но все недосуг или чего-то недопонимал, а тут сразу даже и пример! Огромное спасибо! В xHarbour'e не смог найти функцию hb_strFormat ...

PSP: krutoff пишет: В xHarbour'e не смог найти функцию hb_strFormat Нет там ее, имхо. Делайте просто hb_OutDebug( <str> ). <str> должна появится в окне DebugView. xHarboura нет у меня. Проверить не могу.

Петр: PSP пишет: В xHarbour'e не смог найти функцию hb_strFormat Такой точно нет, а аналога я не знаю (strformat из tests\misc явно не то) В принципе не тяжело и портировать, но это парафия разработчиков xHb

Pasha: Извините, ничего не понял Так это не настоящий отладчик ? Выводить значения переменных можно любым способом: хоть в файл, хоть на экран, через qout, alert, msginfo, __dbg, hb_outDebug, leto_writelog Что дает именно dbgView ?

Петр: Pasha пишет: Так это не настоящий отладчик ? В моем понимании - это трассировщик. Нужный инструмент и в большинстве случае его достаточно. Выводить значения переменных можно любым способом: хоть в файл, хоть на экран, через qout, alert, msginfo, __dbg, hb_outDebug, leto_writelog. Что дает именно dbgView ? В графическом режиме вывод на экран, например с помощью msginfo, не очень удобен, а в некоторых случаях и не возможен - при отладке оконных функций, callback процедур. А так себе для наглядности настроил фильтры, подсветку; установил галочку Always on Top и смотри. Трассировка в файл тоже очень полезна, но не всегда удобна. К преимуществам dbgView я еще бы отнес возможность и удобность использования его в случае отладки сразу нескольких программ, например клиента и сервера; опять же время записывается, можно записать весь вывод в файл. Ну и Remote Monitoring надо будет попробовать когда-то.. IМНО использовать dbgView или нет - это дело вкуса и целесообразности. Возможно когда-то разработчики GUI создадут нормальный отладчик, а теперь, например для MiniGUI, я больших альтернатив не вижу. Работать с встроенным отладчиком действительно неудобно. P.S. Для MiniGUI я бы посоветовал таки создать собственные функции трассировки на базе харборовской, но чтобы и пользователи xHb не чувствовали себя обделенными.

Andrey: Петр пишет: А так себе для наглядности настроил фильтры, подсветку; установил галочку Always on Top и смотри. Блин, не могу ни как настроить это... Вообще перестала выводить данные в окне dbgView .... Подскажите как настроить...

Петр: Andrey там так все расcписано в справке, что мне остается только догадываться, что вы умудрились сделать Capture|Capture Win32 должна стоять птичка О фильтрах As an example, say you want DebugView to display debug output that contains either “error” or “abort”, but want to exclude lines that contain either of those strings and the word “gui”. To configure DebugView’s filters for this you enter “error;abort” for the include filter and “gui” for the exclude filter. If you wanted to have DebugView show only output that has "MyApp:" at the start of the output line and "severe" at the end, you could use a wildcard in the include filter: "myapp:*severe". О подсветке DebugView also has another type of filtering: highlighting. If you want output lines that contain certain text to be highlighted in the DebugView output window, enter a highlight filter. DebugView implements support for up to five different highlight filters, each with its own foreground and background color settings. Use the filter drop-down in the highlight filter area of the filter dialog to select which highlight filter you want to edit. Use the same syntax just described for include and exclude filters when defining a highlight filter.

Andrey: Петр пишет: Capture|Capture Win32 должна стоять птичка Точно, после птички заработало....

Andrey: Блин, убился пока фильтр и подсветку сделал... Для фильтра нужно, в поле Include ввести: test_xHb.exe:* Вот что получилось: Текст программы для хХарбора #xtranslate __dbg( <param> ) => hb_OutDebug( hb_progName()+": " + <param> ) INIT PROCEDURE appInit // __dbg( "START " ) RETURN EXIT PROCEDURE appExit // __dbg( "EXIT " ) RETURN PROCEDURE Main(...) LOCAL nNum := 1.10 LOCAL lBool_1 := .f., lBool_2 := .t. Wait "Hello Start" __dbg( "nNum is " + TRANSFORM(nNum,"99.99" ) ) nNum ++ __dbg( "nNum is " + TRANSFORM(nNum,"99.99" ) ) __dbg( "lBool_1 is " + XTOC(lBool_1) ) __dbg( "lBool_2 is " + XTOC(lBool_2) ) wait "End program" RETURN FUNCTION hb_progName() RETURN SUBSTR(EXENAME(),RAT("\",EXENAME())+1)

Andrey: Петр пишет: для xHb hb_OutDebug( "It's power xHarbour!") А в С коде (для хХарбора) чтобы вывести переменную, что нужно задать ?

Петр: Andrey пишет: А в С коде (для хХарбора) чтобы вывести переменную, что нужно задать ? OutputDebugString("It's power xHarbour!")



полная версия страницы