Идея. Добавить пошаговую отладку в консоль кода
|
|
progromaking | Дата: Пятница, 30.08.2024, 21:21 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 4
Статус: Оффлайн
| В консоль кода добавить пошаговую отладку.
Как она должна работать: 1. При запуске отладки из кода в консоли кода генерится внешняя обработка 2. Вычисляется код, который должен выполниться до точки останова. 3. Через ВЫПОЛНИТЬ выполняется код до точки останова, сохраняются значения переменных по окончании ВЫПОЛНИТЬ. 4. При команде ШАГНУТЬ загружаются сохраненные значения переменных на предыдущем шаге, вычисляется следующий участок кода для выполнения (до следующей точки останова). 5. Через ВЫПОЛНИТЬ выполняется следующий участок кода
Ограничения: 1. В HTML-редакторе возможна отрисовка точек останова, а в обычном редакторе в качестве точек останова можно использовать закладки (синие кружки), т.к. красные кружки вряд ли доступны в этом варианте редактора. 2. Сформировать для выполнения код между последней остановкой и следующей точной останова кажется довольно трудной задачей, но скорее всего решаемой.Добавлено (30.08.2024, 21:35) --------------------------------------------- Как вариант, в качестве точек останова можно слева (или справа) от консоли кода разместить список. В котором отображать номер строки кода, наименование (задаваемое пользователем, опционально), первые символы строки кода. При двойном щелчке в списке курсор должен переходить в соответствующую строку. Список должен быть сворачиваемым
|
|
| |
tormozit | Дата: Пятница, 30.08.2024, 22:31 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| Как ты будешь впрыгивать в цикл ДляКаждого для шагания по нему с сохранением состояния итератора? Зачем все эти сложности, когда есть кнопка "Отладчик", позволяющая отлаживать в привычном интерфейсе конфигуратора?
|
|
| |
progromaking | Дата: Пятница, 30.08.2024, 23:26 | Сообщение # 3 |
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 4
Статус: Оффлайн
| Цитата tormozit ( ) Зачем все эти сложности, когда есть кнопка "Отладчик", позволяющая отлаживать в привычном интерфейсе конфигуратора? В данном режиме можно отлаживать - без включенной отладки в проде - в общей базе с занятым конфигуратором - в случаях когда есть прочие проблемы с подключением к конфигуратору (как пример, проблемы с антивирусом на проде, мешающим подключить отладку, требующие подключение админов)
Насчет цикла сразу затрудняюсь ответить.
|
|
| |
tormozit | Дата: Пятница, 30.08.2024, 23:53 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| Цитата progromaking ( ) - без включенной отладки в проде По какой причине она запрещена?
|
|
| |
progromaking | Дата: Суббота, 31.08.2024, 16:35 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 4
Статус: Оффлайн
| Мне известно две причины, когда может быть запрещена отладка: 1. Когда те, кто принимают решения на рабочем контуре считают, что отладка замедляет, потому что на ИТС так написано. И переубедить сложно и небыстро. 2. Когда отладку отключают намеренно, т.к. при каком-нибудь закрытии месяца есть многочасовые операции, использующие много циклов. В таких случаях по нашим замерам при отключении отладки алгоритмы начинали выполняться быстрее на 40%. В качестве примера такого алгоритма могу привести типовой алгоритм распределения партий при расчете себестоимости в ЕРП 2.5.
В целом согласен, что оба перечисленных случая являются довольно редкими, чтобы ради них заморачиваться на такую трудоемкую и сложную доработку.
|
|
| |
tormozit | Дата: Суббота, 31.08.2024, 20:26 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| В плане задач платформы 8.3.28 есть "Возможность групповой разработки в одной ИБ". Подозреваю будет решаться задача отладки, т.к. это самое логичное объяснение. Но это лишь моя догадка. https://wonderland.v8.1c.ru/blog....riyatie
|
|
| |
tormozit | Дата: Суббота, 31.08.2024, 20:29 | Сообщение # 7 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| Цитата progromaking ( ) при отключении отладки алгоритмы начинали выполняться быстрее на 40% Рекомендую ознакомиться с моим исследованием, которое позволяет делать по сути динамическое локальное отключение отладки чувствительных участков кода. https://infostart.ru/1c/articles/1732527/
|
|
| |
progromaking | Дата: Воскресенье, 01.09.2024, 13:24 | Сообщение # 8 |
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 4
Статус: Оффлайн
| Цитата tormozit ( ) Рекомендую ознакомиться с моим исследованием Сергей, спасибо! Эту статью видели, но типовой код превращать в однострочный, как-то страшнова-то. Во-первых, там много мест, которые нужно однострочить, во-вторых, там присутствует вложенность процедур. Однострочность применяли, даже испытывали, но в итоге отказались, т.к. этот подход требует явного переключения, а это сложно сделать, при условии, что расчет себестоимости выполняется больше суток. Отладка очень долгая. Посчитали, что будет слишком беспокойно, если возникнет какая-нибудь проблема и начнем думать, то ли причина где-то в однострочнике, либо в другом месте. Посчитали, что в данном случае отключить отладку надежнее, чем исправлять код.
|
|
| |
tormozit | Дата: Воскресенье, 01.09.2024, 14:51 | Сообщение # 9 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| Цитата progromaking ( ) требует явного переключения, а это сложно сделать, при условии, что расчет себестоимости выполняется больше суток Не совсем понял в чем тут сложность. На высокочастотных участках кода делаем 2 ветки (по флагу отладки). В нужный момент времени прямо во время выполнения кода подменяем отладчиком значение флага на лету, чтобы остановиться внутри этого участка.
|
|
| |
progromaking | Дата: Воскресенье, 01.09.2024, 15:38 | Сообщение # 10 |
Рядовой
Группа: Пользователи
Сообщений: 6
Репутация: 4
Статус: Оффлайн
| Цитата tormozit ( ) Не совсем понял в чем тут сложность. Допустим есть Процедура1, в которой начинается цикл. Далее из нее вызывается Процедура2, в которой, допустим тоже цикл. Из Процедура2 вызывается Процедура3, которая содержит сложный код, но не содержит циклов. В итоге высокочастотным участком считаются все три процедуры. В каждой нужно ставить флаг отладки (либо делать копии этих процедур, но тогда нужно из однострочника вызывать не Процедура2, а Процедура2_Однострочник, что вносит различие однострочного участка и неоднострочного)
Выше описано для одного этапа. Но всего этапов расчета более 90, в некоторых из которых также встречаются высокочастотные участки, но там они занимают меньше времени. Анализ всех этапов и переделка содержит определенные риски.
На всё это накладываем необходимость поддержки, то есть обновления релиза раз в полгода.
Плюс невысокая квалификация тех, кто будет поддерживать код (мы сделали проект, передали на поддержку. На поддержке обычно специалисты послабее). Могут не разобраться и не внести исправления одновременно в два участка.
Также сами заказчики настороженно относятся к предложению однострочить.
Всё вместе складывается, получаются суммарно довольно высокие риски. Все таки отключить отладку в данном случае выглядит менее рискованным и понятным большему количеству разработчиков.
|
|
| |
tormozit | Дата: Воскресенье, 01.09.2024, 17:51 | Сообщение # 11 |
Генералиссимус
Группа: Администраторы
Сообщений: 6503
Репутация: 173
Статус: Оффлайн
| Ясно. Если подытожить, то там малого числа острых пиков по частоте выполнения среди участков кода.
|
|
| |