|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
Об отладке. Трассировка и более удобные инструменты.06.03.2012, 06:07. Показов 12283. Ответов 24
Метки нет (Все метки)
Я не профессиональный программист и пишу маленькие утилитки. 80% багов в утих утилитках я отлавливаю с помощью трассировки (вывода отладочных сообщений) остальные 20% это стандартный отладчик codegear. Для трассировки я написал себе маленькую утилитку и не пользую метод аля ShowMessage. Я не представляю как можно отлаживать проги иначе.
Но вот в чем для меня парадокс, почему то серьезные программисты не используют трассировку ( или на крайняк используют метод аля ShowMessage), как им удается обходится одним отладчик я не понимаю. Поискав в инете я так же не нашел ни одного нормального трасировщика. Скажите трассировка это что то не нужное и мало эффективное, и есть какие то более удобные инструменты?
0
|
|
| 06.03.2012, 06:07 | |
|
Ответы с готовыми решениями:
24
Удобные инструменты e-mail рассылки Удобные решения на C# для разработчиков БД Удобные сокращения программного кода |
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 07.03.2012, 14:32 [ТС] | |
|
Т.е. я так понимаю, что стандартные брейкпоинты, Watch List, и самописная ф-ция логирования в файл для вас являются верхом удобства и совершенства.
Все же продолжу. Приведу несколько инструментов которые можно использовать при отладке в билдере: -CodeSite - красивый логер, демку которого стали класть в стандартную поставку codegear. -AQTime - анализатор производительности. Показывает какие участки кода работает больше всех. И какой участок кода надо оптимизировать в первую очередь для повышения производительности -Системы управления версиями файлов (например Git). Можно использовать для откатов и выявления этапа работы на котором появился баг. Вопрос: может вы знаете какие то подобные инструменты которые можно использовать для отладки?
0
|
|
|
|
||
| 09.03.2012, 13:54 | ||
Программирование ведь не поэзия, имхо, есть правила, есть исключения из них - все строго и однозначно. Если их знать и к сведению принимать, то хитрые отладчики и не нужны - ведь я и сам знаю какой код и с какой частотой у меня исполняется, каких ресурсов требуют те или иные операции, как и где все это распределяется.
0
|
||
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 09.03.2012, 17:31 [ТС] | |
|
BRcr, если это примитивный алгоритм, то вы правы, то конечно хватит примитивных инструментов. А если алгоритм более менее сложен, и скорость критична, то нет. Найти критичный по скорости кусок без спец. методов бывает очень сложно. Бывает, что единственный способ хоть какой то отладки это логи (причем реалтайм), а брейкпоинты и showmessage абсолютно бесполезны. Бывает что большие ф-ции (например перерисовки картинки) вызываются дважды подряд, и никогда ты это не заметишь ни в каких брейкпоинтах, только в логах.
Добавлено через 3 часа 16 минут И еще к вопросу о профессионализме (только без обид). Книга Киммел. Borland С++ 5.0. К сожалению не нашел в электронном виде, но я так перескажу, что там пишут про протоколирование. Уровни мастерства программиста: - Начальный: Использование обычных ф-ций (или классов) для отладочной печати. Их вызовы пишут и удаляют по мере надобности. В релизной компиляции надо ручками все вычищать. - Мнимый рост мастерства: Оборачивание вызовов обычных ф-ций (классов) из предыдущего пункта в #ifdef, #endif. В релизной компиляции можно отключить протоколирование закоментировав всего 1 строку. - Профессиональный: Использование макросов (макроопределений). А к какому пункту можно отнести ваши варианты?
0
|
|
|
|
|
| 09.03.2012, 22:56 | |
|
gumi250, ну, вот зачем так категорично?
Это ведь все сильно зависит от самого программиста, его личностных особенностей, правда?Кто-то найдет дублированные без надобности вызовы и не используя никакие логи, кто-то - нет. Кто-то предупредит их появление изначально вводом проверок на необходимость выполнения того или иного действия, так как он знает о возможности их появления, кто-то этого не сделает. Каждый из приведенных в этой теме способов отладки имеет право на жизнь, просто у каждого своя сфера применения. Не бывает ничего абсолютного, включая и описанную вами классификацию уровня программиста на основе применяемых им методов отладки; как правильно говорят: "Хороша ложка к обеду." - так же и логирование имеется смысл применять тогда, когда в нем есть реальная необходимость, которая зависит не столько от абстрактной "сложности" задачи, сколько от способностей программиста. Не по теме и шутки ради:
0
|
|
|
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
|
|
| 10.03.2012, 03:31 [ТС] | |
|
Приведенная классификация не моя а автора книги, и в ней идет речь только о логировании. Т.е. если делать логирование, то только через макросы!, а никак не через классы и ф-ции. Это не сложнее зато гораздо лучше.
Есть класс задач который лучше решить брейкпоинтами. Есть задачи который можно решать и логами и брейкпоинтами. Но есть класс задач которые без логирования решить оч. тяжело и это не зависит от вашего профессионализма. Применять к ним ваши методы бесполезно. Есть и другие задачи где удобней и нужней другие инструменты. Но гениям с Мозгами, всего этого не надо они ведь сразу пишут правильный код .Но вот например, как отлаживать многопоточные задачи (таких задач не мало)? Когда работает несколько потоков пошаговое выполнение программы будет идти кусами, то в одном потоке то в другом и отлаживать невозможно. Здесь ничего для отладки кроме логирования я не вижу, а что используете вы в этом случае?
0
|
|
| 10.03.2012, 03:31 | |
|
Помогаю со студенческими работами здесь
25
Удобные вкладки для контактов
Каким образом можно сделать удобные окошки?
Какие самые удобные графический библиотеки вы используете? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|