|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
Об отладке. Трассировка и более удобные инструменты.06.03.2012, 06:07. Показов 12273. Ответов 24
Метки нет (Все метки)
Я не профессиональный программист и пишу маленькие утилитки. 80% багов в утих утилитках я отлавливаю с помощью трассировки (вывода отладочных сообщений) остальные 20% это стандартный отладчик codegear. Для трассировки я написал себе маленькую утилитку и не пользую метод аля ShowMessage. Я не представляю как можно отлаживать проги иначе.
Но вот в чем для меня парадокс, почему то серьезные программисты не используют трассировку ( или на крайняк используют метод аля ShowMessage), как им удается обходится одним отладчик я не понимаю. Поискав в инете я так же не нашел ни одного нормального трасировщика. Скажите трассировка это что то не нужное и мало эффективное, и есть какие то более удобные инструменты?
0
|
|
| 06.03.2012, 06:07 | |
|
Ответы с готовыми решениями:
24
Удобные инструменты e-mail рассылки Удобные решения на C# для разработчиков БД Удобные сокращения программного кода |
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
|||
| 06.03.2012, 08:01 | |||
|
0
|
|||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||||
| 06.03.2012, 08:35 [ТС] | ||||||
|
Как я и написал в начале под трассировкой подразумевает вывод в ходе работы программы отладочных сообщений, что то вроде этого:
0
|
||||||
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|
| 06.03.2012, 09:35 | |
|
Зачем такие сложности в виде вывода отладочной информации, особенно в виде всплывающих окошек, когда самой средой предусмотрены такие функции как пошаговое выполнение, точки останова безусловные/условные, просмотр/изменение значений переменных?
0
|
|
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
||
| 06.03.2012, 09:41 | ||
|
0
|
||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 06.03.2012, 10:31 [ТС] | |
|
Ок, может слово трасировка, не совсем то, слово логирование хода работы программы будет более однозначно. Конечно ShowMessage приведен как крайний случай, но можно выводить например в файл или мемо или консоль, это не столь важно.
Вот такая реакция программистов меня и удивляет. Как можно обходится без логирования? Лично я почти не использую средства отладки среды. Вот как вы решите нижеописанные проблемы: - Если ошибка возникает в середине часто используемого куска кода, например внутри цикла, или onMouseMove(), onDraw(), или внутри ф-ции которая вызывается из разных мест и вас интерисует только тогда когда она вызвана из определенного места. - При закрытии проекта положения брекпоинтов не сохраняется. Большое кол-во брекпоинтов утомляет. Т.е. не всегда они спасают. - Окошечко текущего значения переменных (Wath List) не всегда выводит нужную переменную, список переменных не сохраняется при закрытии проекта, запихнуть в него просмотр массива тоже нереально (А как глянуть содержимое массива). Конечно пошаговое выполнение вещь очень нужная но не всегда ее достаточно, и вот что делать тогда?
0
|
|
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
||||
| 06.03.2012, 11:50 | ||||
|
0
|
||||
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|||||||
| 06.03.2012, 15:17 | |||||||
|
0
|
|||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||||||||||
| 06.03.2012, 16:28 [ТС] | ||||||||||||
|
Про Wath List: специально выкристализовал маленький кусочек кода из проекта побольше
Про вызов ф-ции из других ф-ций пример не оч удачный, а вот onMouseMove() и onDraw() вполне хороший. Про цикл: если цикл от 1 до 10000, и где то в середине есть ошибка на каком конкретно шаге неизвесно, на что ставить условие срабатывания? Как узнать на каком шаге цикла ошибка (пусть для простоты шаг от запуска к запуску не меняется)? А если шаг плавает? А еще, если у вас несколько потоков выполняют одну ф-цию одновременно, и пошаговую отладку кидает из потока в поток (понятно, что сначала отлаживается один поток, но ошибка может появляется именно при многопоточности) и как тогда отлаживать? про Inspect: как с помощью него посмотреть содержимое массива "с" в этом коде:
0
|
||||||||||||
|
3602 / 2743 / 355
Регистрация: 11.03.2009
Сообщений: 6,304
|
|||||
| 06.03.2012, 17:10 | |||||
|
0
|
|||||
|
|
|||||||
| 06.03.2012, 17:17 | |||||||
|
Не по теме: может, и не в тему :pardon: Function to write messages to the Event Log.
1
|
|||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|||||
| 06.03.2012, 18:07 [ТС] | |||||
Я думал, что у профессионалов есть какие то более удобные и мощные инструменты заменяющие хорошее логирование, но я не ожидал, что все так грусно . Неужели вы отлаживаете проги используя только это, но это же мазахизм чистой воды? Логер с легкостью решит большинство из описаных мной проблем. Но почему то большинство не пользуется логерами, а использует, на мой взгляд какие то извращения в виде OutputDebugString и Breakpoint Properties.
0
|
|||||
|
|
|||||||||||
| 06.03.2012, 18:20 | |||||||||||
|
1.
Не по теме: не майо
0
|
|||||||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 06.03.2012, 18:52 [ТС] | |
|
Во первых хочется всех поблагодарить за проявленный интерес к данной теме.
Все же предложенные вами средства, в описаных мной задачах, на мой взгляд являются не удобными и мало эффективными. Вот к примеру простой логер (файл прилагается) , он написан под дельфи (не мной, давно где то скачал). Но все же он показывает хоть какое то удобство работы. Есть что то подобное под С++ builder? Или вы скажите, что предложенные вами методы удобнее?
0
|
|
|
|
||||||
| 06.03.2012, 19:10 | ||||||
|
gumi250, я не говорил, что удобнее, я говорил про варианты. А лично мне удобнее всего что-нибудь типа этого:
1
|
||||||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||||
| 07.03.2012, 06:53 [ТС] | ||||||
|
Вы серьезно рассматриваете предложенные здесь варианты как удобные и допустимые?
У меня есть самописный логер. 80% багов я ловлю в нем. Периодически накапливаются мои хотелки, которые я в нем реализую. И вот перед очередной такой реализацией мне тут подумалось, а может зря я велосипед придумываю и время трачу, наверняка у профессионалов что то подобное уже реализованно и наверняка даже лучше. Приведу маленький пример моего лога. Это мой код:
Я ожидал услышать, что у профессионалов есть столь же удобные инструменты отладки, а услышанный ответ поставил меня в недоумение. Я искренне не понимаю КАК вы ловите баги.
0
|
||||||
|
|
||
| 07.03.2012, 10:24 | ||
|
1
|
||
|
return (true);
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
|
||
| 07.03.2012, 10:25 | ||
|
Я вас огорчу, у большинства программистов отсутствует необходимость в таком подробном логгировании. Вот что не хватает билдеру, так это хорошой системы отлова уязвимостей и ошибок типа PVS-Studio или ReSharper, которые есть для Visual Studio.
2
|
||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
||||
| 07.03.2012, 11:12 [ТС] | ||||
0
|
||||
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||
| 07.03.2012, 11:28 | |||
|
Только чтобы отловить баги, которые ты выше описал, такие инструменты не нужны, стандартных легко хватит без извращений.
0
|
|||
| 07.03.2012, 11:28 | |
|
Помогаю со студенческими работами здесь
20
Удобные вкладки для контактов
Каким образом можно сделать удобные окошки?
Какие самые удобные графический библиотеки вы используете? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|