@Alex84 Привет, так как нету репутации не смог ответить в лс, так что отвечу здесь
Афигеть, спасибо большое! Советы прям пушка, ответил на многое что меня интересовало) Спасибо еще раз за советы, буду дальше осваивать bas, таких людей как вы можно редко встретить)
Отладка
-
Добрый день. Как вы производите отладку сложных скриптов?
Написал большой скрипт в многопотоке и в процессе работы происходит зависание, но в логах ничего не пишется и по времени выполнения каждого блока тоже не удается отследить, так как все вылетает. Как можно отследить где все слетает не добавляя лишних записей в ЛОГ и блоков проверок? Может Bas куда-то системные логи пишет?Спасибо!
-
Добрый день. Как вы производите отладку сложных скриптов?
Написал большой скрипт в многопотоке и в процессе работы происходит зависание, но в логах ничего не пишется и по времени выполнения каждого блока тоже не удается отследить, так как все вылетает. Как можно отследить где все слетает не добавляя лишних записей в ЛОГ и блоков проверок? Может Bas куда-то системные логи пишет?Спасибо!
BAS пишет системные логи (например для ноды), но отладить скрипт с их помощью вы не сможете. Опытный кодер изначально продумывает ситуации, которые могут привести в зависанию, например бесконечный цикл ожидания без задержки может вызвать зависание интерфейса.
в теме лайфхаков на подобный случай есть пост:
@antonio said in Лайфхаки BAS:function _sa(id) { log(id) ScriptWorker.SetCurrentAction(id) }После этого когда в лог начинают выводиться id всех выполняемых действий. Потом можно однозначно прочесть последовательность всего произошедшего. Помогало мне жесткие баги отлавливать.
Лучше включать только для дебага! (если действий много в скрипте).@romanbiz, я так понимаю, что это твой пункт 6 "по-умному".
Но такая отладка устарела, так как функция перестанет выводить в лог информацию после действий с браузером и ряда других стандартных действий. Так что самым продуктивным и простым способом остаётся вывод в лог технических данных (логическое место в скрипте, данные из переменных и т.п.)
-
За все время ловил вылеты BAS в многопотоке только в 2 случаях:
1)Бесконечный цикл. Нужна задержка.
2)Не созданная переменная. При краше в лог BAS в видимую часть просто не успевало писать, что переменная не создана. Пришлось лезть в логи где хранит сам бот.