Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/64: Рейтинг темы: голосов - 64, средняя оценка - 4.78
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384

Об отладке. Трассировка и более удобные инструменты.

06.03.2012, 06:07. Показов 12283. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я не профессиональный программист и пишу маленькие утилитки. 80% багов в утих утилитках я отлавливаю с помощью трассировки (вывода отладочных сообщений) остальные 20% это стандартный отладчик codegear. Для трассировки я написал себе маленькую утилитку и не пользую метод аля ShowMessage. Я не представляю как можно отлаживать проги иначе.
Но вот в чем для меня парадокс, почему то серьезные программисты не используют трассировку ( или на крайняк используют метод аля ShowMessage), как им удается обходится одним отладчик я не понимаю. Поискав в инете я так же не нашел ни одного нормального трасировщика. Скажите трассировка это что то не нужное и мало эффективное, и есть какие то более удобные инструменты?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2012, 06:07
Ответы с готовыми решениями:

Удобные инструменты e-mail рассылки
Посоветуйте, как лучше сделать e-mail рассылку? Какие могут возникнуть проблемы и ошибки? Что касается базы, её формирую с помощью...

Удобные решения на C# для разработчиков БД
Эта статья посвящена маленькой, но очень частой проблеме разработчиков приложений БД. Вспомните, как часто у Вас по какой-то неведомой...

Удобные сокращения программного кода
Делаем код удобнее, красивее и короче:) Сложение: переменная += значение (i = 1 i += 1 i будет равно 2) ...

24
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
07.03.2012, 14:32  [ТС]
Студворк — интернет-сервис помощи студентам
Т.е. я так понимаю, что стандартные брейкпоинты, Watch List, и самописная ф-ция логирования в файл для вас являются верхом удобства и совершенства.
Все же продолжу. Приведу несколько инструментов которые можно использовать при отладке в билдере:
-CodeSite - красивый логер, демку которого стали класть в стандартную поставку codegear.
-AQTime - анализатор производительности. Показывает какие участки кода работает больше всех. И какой участок кода надо оптимизировать в первую очередь для повышения производительности
-Системы управления версиями файлов (например Git). Можно использовать для откатов и выявления этапа работы на котором появился баг.
Вопрос: может вы знаете какие то подобные инструменты которые можно использовать для отладки?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.03.2012, 13:54
Цитата Сообщение от gumi250 Посмотреть сообщение
Вопрос: может вы знаете какие то подобные инструменты которые можно использовать для отладки?
Да - мозг. Программирование ведь не поэзия, имхо, есть правила, есть исключения из них - все строго и однозначно. Если их знать и к сведению принимать, то хитрые отладчики и не нужны - ведь я и сам знаю какой код и с какой частотой у меня исполняется, каких ресурсов требуют те или иные операции, как и где все это распределяется.
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
09.03.2012, 17:31  [ТС]
BRcr, если это примитивный алгоритм, то вы правы, то конечно хватит примитивных инструментов. А если алгоритм более менее сложен, и скорость критична, то нет. Найти критичный по скорости кусок без спец. методов бывает очень сложно. Бывает, что единственный способ хоть какой то отладки это логи (причем реалтайм), а брейкпоинты и showmessage абсолютно бесполезны. Бывает что большие ф-ции (например перерисовки картинки) вызываются дважды подряд, и никогда ты это не заметишь ни в каких брейкпоинтах, только в логах.

Добавлено через 3 часа 16 минут
И еще к вопросу о профессионализме (только без обид). Книга Киммел. Borland С++ 5.0. К сожалению не нашел в электронном виде, но я так перескажу, что там пишут про протоколирование. Уровни мастерства программиста:
- Начальный: Использование обычных ф-ций (или классов) для отладочной печати. Их вызовы пишут и удаляют по мере надобности. В релизной компиляции надо ручками все вычищать.
- Мнимый рост мастерства: Оборачивание вызовов обычных ф-ций (классов) из предыдущего пункта в #ifdef, #endif. В релизной компиляции можно отключить протоколирование закоментировав всего 1 строку.
- Профессиональный: Использование макросов (макроопределений).
А к какому пункту можно отнести ваши варианты?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.03.2012, 22:56
gumi250, ну, вот зачем так категорично? Это ведь все сильно зависит от самого программиста, его личностных особенностей, правда?
Кто-то найдет дублированные без надобности вызовы и не используя никакие логи, кто-то - нет. Кто-то предупредит их появление изначально вводом проверок на необходимость выполнения того или иного действия, так как он знает о возможности их появления, кто-то этого не сделает.

Каждый из приведенных в этой теме способов отладки имеет право на жизнь, просто у каждого своя сфера применения. Не бывает ничего абсолютного, включая и описанную вами классификацию уровня программиста на основе применяемых им методов отладки; как правильно говорят: "Хороша ложка к обеду." - так же и логирование имеется смысл применять тогда, когда в нем есть реальная необходимость, которая зависит не столько от абстрактной "сложности" задачи, сколько от способностей программиста.
Не по теме и шутки ради:
К слову, я затрудняюсь отнести предложенное мной в качестве варианта использование невооруженного мозга к какому-то пункту в описанной вами классификации.
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
10.03.2012, 03:31  [ТС]
Приведенная классификация не моя а автора книги, и в ней идет речь только о логировании. Т.е. если делать логирование, то только через макросы!, а никак не через классы и ф-ции. Это не сложнее зато гораздо лучше.
Есть класс задач который лучше решить брейкпоинтами. Есть задачи который можно решать и логами и брейкпоинтами. Но есть класс задач которые без логирования решить оч. тяжело и это не зависит от вашего профессионализма. Применять к ним ваши методы бесполезно. Есть и другие задачи где удобней и нужней другие инструменты. Но гениям с Мозгами, всего этого не надо они ведь сразу пишут правильный код .
Но вот например, как отлаживать многопоточные задачи (таких задач не мало)? Когда работает несколько потоков пошаговое выполнение программы будет идти кусами, то в одном потоке то в другом и отлаживать невозможно. Здесь ничего для отладки кроме логирования я не вижу, а что используете вы в этом случае?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.03.2012, 03:31
Помогаю со студенческими работами здесь

Удобные вкладки для контактов
помогите создать вот такую систему вкладок или дайте ссылку может есть готовый вариант. пробовал делать чисто на css то при...

Быстрые и удобные способы создания элементов
Много вложенных объектов, создаю блок, чтоб его потом заполнить циклом данными. Подскажите способы, как можно оптимизировать эти три...

Каким образом можно сделать удобные окошки?
Добрый вечер, господа форумчане. Интересно узнать, с помощью каких средств можно сделать удобные окошки (как в Visual Studio, или VMware,...

WPF: готовые удобные решения для MVVM
По мотивам последних рекомендаций, посоветуйте готовые решения под следующие критерии. * только 'PostSharp' и аналоги не советуйте,...

Какие самые удобные графический библиотеки вы используете?
Работая на python приходится встречаться с GUI библиотеками. Мне вдруг стало интересно, какие графические библиотеки самые хорошие,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru