Отладка



  • Добрый день. Как вы производите отладку сложных скриптов?
    Написал большой скрипт в многопотоке и в процессе работы происходит зависание, но в логах ничего не пишется и по времени выполнения каждого блока тоже не удается отследить, так как все вылетает. Как можно отследить где все слетает не добавляя лишних записей в ЛОГ и блоков проверок? Может Bas куда-то системные логи пишет?

    Спасибо!



  • @dinomys said in Отладка:

    Добрый день. Как вы производите отладку сложных скриптов?
    Написал большой скрипт в многопотоке и в процессе работы происходит зависание, но в логах ничего не пишется и по времени выполнения каждого блока тоже не удается отследить, так как все вылетает. Как можно отследить где все слетает не добавляя лишних записей в ЛОГ и блоков проверок? Может Bas куда-то системные логи пишет?

    Спасибо!

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

    в теме лайфхаков на подобный случай есть пост:
    @antonio said in Лайфхаки BAS:

    function _sa(id)
    {
    log(id)
       ScriptWorker.SetCurrentAction(id)
    }
    

    После этого когда в лог начинают выводиться id всех выполняемых действий. Потом можно однозначно прочесть последовательность всего произошедшего. Помогало мне жесткие баги отлавливать.
    Лучше включать только для дебага! (если действий много в скрипте).

    @romanbiz, я так понимаю, что это твой пункт 6 "по-умному".

    Но такая отладка устарела, так как функция перестанет выводить в лог информацию после действий с браузером и ряда других стандартных действий. Так что самым продуктивным и простым способом остаётся вывод в лог технических данных (логическое место в скрипте, данные из переменных и т.п.)



  • За все время ловил вылеты BAS в многопотоке только в 2 случаях:
    1)Бесконечный цикл. Нужна задержка.
    2)Не созданная переменная. При краше в лог BAS в видимую часть просто не успевало писать, что переменная не создана. Пришлось лезть в логи где хранит сам бот.


Log in to reply
 

  • 5
  • 5
  • 10
  • 10
  • 3
  • 9
  • 2
  • 8