OberonCore
https://forum.oberoncore.ru/

О необходимости отладчика.
https://forum.oberoncore.ru/viewtopic.php?f=86&t=6791
Страница 1 из 2

Автор:  Wlad [ Вторник, 27 Июль, 2021 01:15 ]
Заголовок сообщения:  О необходимости отладчика.

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

Автор:  adimetrius [ Вторник, 27 Июль, 2021 11:34 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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


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

Автор:  Comdiv [ Вторник, 27 Июль, 2021 11:50 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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

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

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

Помимо отладчика по аварийным остановкам. В виндовой версии Блэкбокса от Центра есть и пошаговый отладчик тоже. Никогда для дела им не пользовался, но Йозеф утверждал, что ему несколько раз он пригождался. Из кросс-платформенной версии его пока убрали до лучших времен, когда без него тоже все будет работать как швейцарские часы.

Автор:  budden [ Вторник, 27 Июль, 2021 13:00 ]
Заголовок сообщения:  Re: О необходимости отладчика.

Согласен с оратором.

Автор:  Илья Ермаков [ Вторник, 27 Июль, 2021 13:37 ]
Заголовок сообщения:  Re: О необходимости отладчика.

В педагогике, конечно, пошаговый отладчик вреден.

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

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

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

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

Автор:  Comdiv [ Вторник, 27 Июль, 2021 14:05 ]
Заголовок сообщения:  Re: О необходимости отладчика.

Илья Ермаков писал(а):
(Ещё раз подчеркну, что речь не о плохо написанном отдельном алгоритме, а о задачах, когда нужно ещё локализовать причину неправильного поведения системы в целом, и т.д., и т.п.)
Для такого я и пропагандирую отладочно ориентированное тестирование. Последствия от него долговременные, а не сиюминутные и частные.

Автор:  budden [ Вторник, 27 Июль, 2021 15:10 ]
Заголовок сообщения:  Re: О необходимости отладчика.

1. Что такое "отладочно-ориентированное тестирование"?

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

Автор:  Comdiv [ Вторник, 27 Июль, 2021 16:21 ]
Заголовок сообщения:  Re: О необходимости отладчика.

budden писал(а):
1. Что такое "отладочно-ориентированное тестирование"?
Иерархическое обкладывание тестами и проверочными утверждениями по мере продвижения к проблемному месту.

Автор:  Trurl [ Вторник, 27 Июль, 2021 16:25 ]
Заголовок сообщения:  Re: О необходимости отладчика.

Мне, кажется, ни разу не помог. Но если кому нужен, что же возражать?

Автор:  Comdiv [ Вторник, 27 Июль, 2021 16:29 ]
Заголовок сообщения:  Re: О необходимости отладчика.

Просто отладчиком ещё нужно учиться пользоваться, чтобы он был не был просто костылём для костылей, а действительным помощником. Мог и поэтому не помочь.

Автор:  Trurl [ Вторник, 27 Июль, 2021 17:51 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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

Автор:  Comdiv [ Вторник, 27 Июль, 2021 19:11 ]
Заголовок сообщения:  Re: О необходимости отладчика.

Trurl писал(а):
Но вот обязательно ли первое?
Совершенно не обязательно, тем более что разработка бывает сильно разная, а область применения отладчика, где он раскрывается во всей полноте - это даже и не разработка.

Автор:  budden [ Вторник, 27 Июль, 2021 20:15 ]
Заголовок сообщения:  Re: О необходимости отладчика.

Comdiv писал(а):
budden писал(а):
1. Что такое "отладочно-ориентированное тестирование"?
Иерархическое обкладывание тестами и проверочными утверждениями по мере продвижения к проблемному месту.

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

Автор:  budden [ Вторник, 27 Июль, 2021 20:29 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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


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

Автор:  adimetrius [ Вторник, 27 Июль, 2021 22:42 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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


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

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

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

Автор:  Wlad [ Вторник, 27 Июль, 2021 23:30 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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

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

Автор:  budden [ Вторник, 27 Июль, 2021 23:43 ]
Заголовок сообщения:  Re: О необходимости отладчика.

ББ - это простой, маленький проект, односвязный (не состоящий из множества клиентов, серверов и т.п), поэтому там и задачи проще. Чем сложнее проект, тем выше требования к инструментам.

Автор:  budden [ Вторник, 27 Июль, 2021 23:45 ]
Заголовок сообщения:  Re: О необходимости отладчика.

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

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

Автор:  adimetrius [ Среда, 28 Июль, 2021 00:17 ]
Заголовок сообщения:  Re: О необходимости отладчика.

budden писал(а):
ББ - это простой, маленький проект, односвязный (не состоящий из множества клиентов, серверов и т.п), поэтому там и задачи проще. Чем сложнее проект, тем выше требования к инструментам.


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

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

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

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

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/