Автор | Сообщение |
|
| |
Пост N: 121
Зарегистрирован: 17.10.05
|
|
Отправлено: 27.01.10 12:26. Заголовок: Отладка программы
Кто чем отлаживается? Я попытался использовать в GUI режиме debug (altd), очень медленно, неудобно. Приходится подключать процедуру fDebug(...) и таким образом просматривать значения переменных после окончания программы. А вот качественный отладчик с трассировкой - это, наверное, в бесплатном варианте невозможно. А у кого какие методы, способы и инструменты отладки?
|
|
|
Ответов - 26
, стр:
1
2
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 1064
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.01.10 17:14. Заголовок: Я пока пользуюсь Msg..
Я пока пользуюсь MsgInfo().... Так неудобно ...
|
|
|
|
| |
Пост N: 124
Зарегистрирован: 17.10.05
|
|
Отправлено: 29.01.10 22:54. Заголовок: 71 просмотр и только..
71 просмотр и только один ответ, неужели тема не актуальна?
|
|
|
|
| постоянный участник
|
Пост N: 801
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.01.10 00:29. Заголовок: krutoff пишет: Кто ..
krutoff пишет: Ну я, к примеру, часто использую [url=http://technet.microsoft.com/ru-ru/sysinternals/bb896647(en-us).aspx]DebugView[/url] #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 С одинаковым успехом из PRG и C кода.
|
|
|
|
| постоянный участник
|
Пост N: 1066
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.01.10 15:13. Заголовок: Петр пишет: Ну я, к..
Петр пишет: цитата: | Ну я, к примеру, часто использую [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) Может обновиться нужно ?
|
|
|
|
| постоянный участник
|
Пост N: 802
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.01.10 15:42. Заголовок: Andrey пишет: Может..
Andrey пишет: Естественно - harbour 2 уже не beta, да и MiniGUI актуальная версия 1.79 А еще нужно подключать библиотеку hbwin/
|
|
|
|
| постоянный участник
|
Пост N: 278
Зарегистрирован: 27.01.07
|
|
Отправлено: 30.01.10 18:22. Заголовок: Попробывал DebugView..
Попробывал DebugView. Просто и эффективно. Спасибо.
|
|
|
|
| постоянный участник
|
Пост N: 803
Зарегистрирован: 09.10.06
|
|
Отправлено: 30.01.10 22:26. Заголовок: PSP пишет: Попробыв..
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*
|
|
|
|
| постоянный участник
|
Пост N: 1068
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.10 00:56. Заголовок: Ура, и у меня получи..
Ура, и у меня получилось... Только нужно запустить заранее DebugView.ехе получается такая картинка: Действительно, здорово.... А есть ли документация по DebugView ?
|
|
|
|
| постоянный участник
|
Пост N: 804
Зарегистрирован: 09.10.06
|
|
Отправлено: 31.01.10 10:22. Заголовок: Andrey пишет: А ест..
Andrey пишет: цитата: | А есть ли документация по DebugView ? |
| Странный вопрос.. Mеню Help->Help или F1
|
|
|
|
| |
Пост N: 125
Зарегистрирован: 17.10.05
|
|
Отправлено: 31.01.10 12:12. Заголовок: В xHarbour'e не..
Петр, спасибо большое, что поделился такой неоценимой информацией! Я сам пытался, просматривал исходники, но все недосуг или чего-то недопонимал, а тут сразу даже и пример! Огромное спасибо! В xHarbour'e не смог найти функцию hb_strFormat ...
|
|
|
|
| постоянный участник
|
Пост N: 281
Зарегистрирован: 27.01.07
|
|
Отправлено: 31.01.10 12:19. Заголовок: krutoff пишет: В xH..
krutoff пишет: цитата: | В xHarbour'e не смог найти функцию hb_strFormat |
| Нет там ее, имхо. Делайте просто hb_OutDebug( <str> ). <str> должна появится в окне DebugView. xHarboura нет у меня. Проверить не могу.
|
|
|
|
|
| постоянный участник
|
Пост N: 805
Зарегистрирован: 09.10.06
|
|
Отправлено: 31.01.10 13:40. Заголовок: PSP пишет: В xHarbo..
PSP пишет: цитата: | В xHarbour'e не смог найти функцию hb_strFormat |
| Такой точно нет, а аналога я не знаю (strformat из tests\misc явно не то) В принципе не тяжело и портировать, но это парафия разработчиков xHb
|
|
|
|
| Администратор
|
Пост N: 1324
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.01.10 14:55. Заголовок: Извините, ничего не ..
Извините, ничего не понял Так это не настоящий отладчик ? Выводить значения переменных можно любым способом: хоть в файл, хоть на экран, через qout, alert, msginfo, __dbg, hb_outDebug, leto_writelog Что дает именно dbgView ?
|
|
|
|
| постоянный участник
|
Пост N: 806
Зарегистрирован: 09.10.06
|
|
Отправлено: 31.01.10 16:30. Заголовок: Pasha пишет: Так эт..
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 не чувствовали себя обделенными.
|
|
|
|
| постоянный участник
|
Пост N: 1069
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.10 16:43. Заголовок: Петр пишет: А так с..
Петр пишет: цитата: | А так себе для наглядности настроил фильтры, подсветку; установил галочку Always on Top и смотри. |
| Блин, не могу ни как настроить это... Вообще перестала выводить данные в окне dbgView .... Подскажите как настроить...
|
|
|
|
| постоянный участник
|
Пост N: 808
Зарегистрирован: 09.10.06
|
|
Отправлено: 01.02.10 17:38. Заголовок: Andrey там так все ..
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.
|
|
|
|
| постоянный участник
|
Пост N: 1070
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.10 18:18. Заголовок: Петр пишет: Capture..
Петр пишет: цитата: | Capture|Capture Win32 должна стоять птичка |
| Точно, после птички заработало....
|
|
|
|
| постоянный участник
|
Пост N: 1071
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.10 18:24. Заголовок: Блин, убился пока фи..
Блин, убился пока фильтр и подсветку сделал... Для фильтра нужно, в поле 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)
|
|
|
|
|
| постоянный участник
|
Пост N: 1072
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.10 19:14. Заголовок: Петр пишет: для xHb..
Петр пишет: цитата: | для xHb hb_OutDebug( "It's power xHarbour!") |
| А в С коде (для хХарбора) чтобы вывести переменную, что нужно задать ?
|
|
|
|
| постоянный участник
|
Пост N: 809
Зарегистрирован: 09.10.06
|
|
Отправлено: 01.02.10 20:37. Заголовок: Andrey пишет: А в С..
Andrey пишет: цитата: | А в С коде (для хХарбора) чтобы вывести переменную, что нужно задать ? |
| OutputDebugString("It's power xHarbour!")
|
|
|
Ответов - 26
, стр:
1
2
All
[только новые]
|
|