OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 23 Сентябрь, 2021 09:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 01:15 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1664
По молодости лет, пока не пришлось участвовать НЕ столько в разработке систем, а, больше - "подхватывать знамя", я тоже был ярым сторонником необязательности наличия отладчика. Даже апеллировал к авторитету Мэтра...
Жизнь внесла свои коррективы.
Когда из документации по системе - только исходники, а сторей и багов в джире или девопсе - "как грязи", и баги надо было исправить и реализовать "ещё вчера"... Без отладчика и посещения в нём кучи мест в коде, просто невозможно представить себе сопровождение и исправление системы, которую ты, неделю назад, и в глаза не видел...
Ещё раз повторюсь: тезис Вирта, в какой-то мере, применим в случае разработки собственной системы, приложения. Но, при вхождении в проект огромного размера, без отладчика, практически невозможно понять, что, где и как, хотя бы примерно. Простой просмотр и изучение исходников может помочь в отдельных аспектах, но не все - "Алёхины в программировании". Аргумент с "достаточностью вывода лога" - тоже - не всегда силён.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 11:34 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 501
Wlad писал(а):
По молодости лет, пока не пришлось участвовать НЕ столько в разработке систем, а, больше - "подхватывать знамя", я тоже был ярым сторонником необязательности наличия отладчика. Даже апеллировал к авторитету Мэтра...
Жизнь внесла свои коррективы.
Когда из документации по системе - только исходники, а сторей и багов в джире или девопсе - "как грязи", и баги надо было исправить и реализовать "ещё вчера"... Без отладчика и посещения в нём кучи мест в коде, просто невозможно представить себе сопровождение и исправление системы, которую ты, неделю назад, и в глаза не видел...
Ещё раз повторюсь: тезис Вирта, в какой-то мере, применим в случае разработки собственной системы, приложения. Но, при вхождении в проект огромного размера, без отладчика, практически невозможно понять, что, где и как, хотя бы примерно. Простой просмотр и изучение исходников может помочь в отдельных аспектах, но не все - "Алёхины в программировании". Аргумент с "достаточностью вывода лога" - тоже - не всегда силён.


1) А на каком языке сконструирована та система, в которую вам вникать пришлось с помощью отладчика?
2) Уточните, пож, вы же, вероятно, про пошаговый отладчик говорите? Я не припоминаю, чтобы Метр вообще был против отладки - напротив, ББ унаследовал от системы Оберон мощнейший посмертный отладчик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 11:50 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1314
Откуда: Киев
Да, Антон, это постоянный предмет недоразумений - путаница отладки в целом и работы с пошаговым отладчиком. Необходимо всегда уточнять, но как показал опыт, это тоже не всегда помогает.

Я в качестве альтернативы пошаговой отладке унаследованного кода для разработки, а не для инъекций, пропагандирую отладочно-ориентированное тестирование. Перспективы открывает намного лучшие.


Последний раз редактировалось Comdiv Вторник, 27 Июль, 2021 11:53, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 11:52 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3131
Помимо отладчика по аварийным остановкам. В виндовой версии Блэкбокса от Центра есть и пошаговый отладчик тоже. Никогда для дела им не пользовался, но Йозеф утверждал, что ему несколько раз он пригождался. Из кросс-платформенной версии его пока убрали до лучших времен, когда без него тоже все будет работать как швейцарские часы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 13:00 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1344
Согласен с оратором.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 13:37 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9438
Откуда: Россия, Орёл
В педагогике, конечно, пошаговый отладчик вреден.

В реальной разработке я поддержу Владимира - средств диагностики много не бывает... Чем больше есть инструментов, чтобы понять, что именно происходит, тем лучше.

Да, на уровне именно кодирования куска алгоритма пошаговый отладчик способен развращать разработчиков, которые ещё не вошли во вкус написания сразу понятного по свойствам кода.
Но мало ли что может развращать... Отсутствие отладчика не приведёт автоматом к написанию хорошего цикла.

Так что это не аргумент, чтобы не иметь его для интеграционных задач, где протоколы, стороны и т.п.
Время на диагностику бывает очень дорого.

Есть и ещё один эффект: часто внимательный пассивный анализ позволяет найти проблему даже быстрее, чем любая форма отладки (логирования и т.п.) НО! Это разные режимы работы сознания. В целом мозг работать в интенсивно-аналитическом режиме способен ограниченное число часов в день. Поэтому иногда оправданее тупо попечатать в логи и погонять систему час, чем потратить полчаса на чтение и анализ.
(Ещё раз подчеркну, что речь не о плохо написанном отдельном алгоритме, а о задачах, когда нужно ещё локализовать причину неправильного поведения системы в целом, и т.д., и т.п.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 14:05 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1314
Откуда: Киев
Илья Ермаков писал(а):
(Ещё раз подчеркну, что речь не о плохо написанном отдельном алгоритме, а о задачах, когда нужно ещё локализовать причину неправильного поведения системы в целом, и т.д., и т.п.)
Для такого я и пропагандирую отладочно ориентированное тестирование. Последствия от него долговременные, а не сиюминутные и частные.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 15:10 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1344
1. Что такое "отладочно-ориентированное тестирование"?

2. Отладчик в blackboxcomponentbuilder работает только под Windows, т.к. опирается на соответствующее API, поэтому его кроссплатформенность слегка платформозависима. В теории он, может быть, и под Wine заработает, но это надо пробовать, а похоже, никто не заинтересован.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 16:21 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1314
Откуда: Киев
budden писал(а):
1. Что такое "отладочно-ориентированное тестирование"?
Иерархическое обкладывание тестами и проверочными утверждениями по мере продвижения к проблемному месту.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 16:25 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1393
Мне, кажется, ни разу не помог. Но если кому нужен, что же возражать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 16:29 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1314
Откуда: Киев
Просто отладчиком ещё нужно учиться пользоваться, чтобы он был не был просто костылём для костылей, а действительным помощником. Мог и поэтому не помочь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 17:51 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1393
Если нужно пользоваться, конечно, нужно учиться пользоваться. Но вот обязательно ли первое? Есть программисты, которые охотно и с удовольсвием пользуются отладчиками, а есть те, которые их не любят. Тот же Торвальдс, например. Или хрестоматийная история про Пайка и Томпсона.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 19:11 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1314
Откуда: Киев
Trurl писал(а):
Но вот обязательно ли первое?
Совершенно не обязательно, тем более что разработка бывает сильно разная, а область применения отладчика, где он раскрывается во всей полноте - это даже и не разработка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 20:15 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1344
Comdiv писал(а):
budden писал(а):
1. Что такое "отладочно-ориентированное тестирование"?
Иерархическое обкладывание тестами и проверочными утверждениями по мере продвижения к проблемному месту.

Ну это если есть проблемное место. А иногда просто хотим понять, откуда что-то вызывается. Тогда ставим там брекпойнт и смотрим стек.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 20:29 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1344
Trurl писал(а):
Если нужно пользоваться, конечно, нужно учиться пользоваться. Но вот обязательно ли первое? Есть программисты, которые охотно и с удовольсвием пользуются отладчиками, а есть те, которые их не любят. Тот же Торвальдс, например. Или хрестоматийная история про Пайка и Томпсона.


Позвольте спросить, а Вы пробовали и не помог или Вы не пробовали и не помог?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 22:42 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 501
budden писал(а):
... А иногда просто хотим понять, откуда что-то вызывается. Тогда ставим там брекпойнт и смотрим стек.


Поскольку в КП четкая модульность с понятными границами, то: чтобы понять, откуда вызывается Mod.Procedure, помогает текстовый поиск по модулю Mod, кнопочкой F3 обычно. Если же Mod.Procedure* - то Info->Search in Sources.

Если уж очень хочется стек посмотреть - можно в интересующем месте поставить HALT(N) вместо брекпойнта. Мне трудно вообразить более исчерпывающую информацию, чем предоставляет анализатор стека (точнее, аварийного останова) в ББ. При этом она "немодальна", штоли.

Конечно, поставить принудительный авост в интересующем месте - это значит перекомпилировать и пересобрать систему. Иногда - совершенно непозволительная роскошь в мире С и т.п.; столько кофе нельзя пить, сколько кофебрейков придется за день сделать ;) Поэтому там вполне оправдано использование брекпойнтов: они по крайней мере перекомпиляции/пересборки не требуют. А в ББ - чож не перекомпилировать! Весь ББ перекомпилируется за пару секунд - тут в носу ковырнуть не успеешь, не то что кофе попить!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 23:30 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1664
Всю мощь от помощи отладчика я увидел и прочувствовал недавно, когда нужно было портировать полубаговый код из одной системы (без ОС) в другую (embox). Язык - Си++. Отладчик - разновидность gdb через OpenOCD. Оглядываясь назад, и видя теперь ту прорву работы по аналитике совершенно незнакомого и недокументированного кода, я просто прихожу в ужас, от осознания того, во что могла превратиться наша жизнь, если бы мы положились бы только на логи. При том, что, по сути-то, нам не было, через что их выбрасывать на инструментальную машину - ВСЯ периферия, хоть как-то способная к передаче данных была занята. Ни одного свободного пина не осталось!
Ещё раз конкретизирую:
Когда код - "свой", разрабатывается с нуля и/или хорошо документирован, то можно использовать диагностические сообщение, что-то "посмертное" и логи.
Если же система "свалилась" от типовых "гениев ИТ", не утруждающих себя излишней заботой об описаниях и диаграммах, то пошаговый отладчик, часто, оказывается единственным спасением.

Кстати, кто-то что-то подобное doxygen-y для Delphi (приличного качества) встречал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 23:43 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1344
ББ - это простой, маленький проект, односвязный (не состоящий из множества клиентов, серверов и т.п), поэтому там и задачи проще. Чем сложнее проект, тем выше требования к инструментам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Вторник, 27 Июль, 2021 23:45 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1344
Wlad писал(а):
Кстати, кто-то что-то подобное doxygen-y для Delphi (приличного качества) встречал?

Вроде должно быть, хотя сам не пользовался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О необходимости отладчика.
СообщениеДобавлено: Среда, 28 Июль, 2021 00:17 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 501
budden писал(а):
ББ - это простой, маленький проект, односвязный (не состоящий из множества клиентов, серверов и т.п), поэтому там и задачи проще. Чем сложнее проект, тем выше требования к инструментам.


То ли дело С++ - большой, сложный, настоящий. Без отладчика и 1,5Г памяти - ну никак не разберешься.

Повторюсь: в КП - четкая модульность с понятными границами. Добавлю: простая. Это - залог того, что и при множестве клиентов, серверов и прочих составных частей сложной системы сложность системы не становится неуправляемой, и справляться с ней можно не инструментами с "выше требованиями", а простыми средствами типа текстового поиска.

Вот пример, хоть и не про модульность.
PROCEDURE P (...);
так объявляется процедура на КП. Найти это определение можно по строке 'RE P', благодаря тому что есть ключевое слово.
А как найти определение функции на С?
void P(...); это прототип
void P(...) { а это определение
без разбора (...) не обойтись, хотя бы скобочки посчитать и комментарии все пропустить, не забыв, что они вложенными могут быть. => Нужен инструмент с "выше требованиями". Зато лишнего ключевого слова нет - типа синтаксис проще; ну, короче, по крайней мере. Ну что ж, каждый себе сам решает, что упрощать: синтаксис или инструмент, который за этим синтаксисом тянется.

Можно упростить так: выкинуть эти глупости с произвольным форматированием исходников, и сделать все, как у людей: plain text. Ну а потом прикрутить еще к разработчикам жиру или другой какой инструмент с высокими требованиями, чтобы учитывать технический долг, задачи ставить и пр.
А можно упростить в другом месте: хранить форматирование исходников и отмечать технический долг определенным цветом; и жира не нужна, можно обойтись поиском по цвету.

П.С. если коллеги подскажут простой неизвестный мне способ, как искать определения функций на С - буду признателен.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2021, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB