Ошибки компиляции

Запросы функционала
  • Необходимо вывести в лог все возникающие ошибки компиляции проекта чтобы можно было отловить их. Сейчас если допустить в проекте какую то ошибку он просто наглухо вешает движок... и выискивать ошибку становится крайне проблематично :(

  • @qwaros said in Ошибки компиляции:

    если допустить в проекте какую то ошибку он просто наглухо вешает движок

    Приведите пример ситуации.

  • @fox http://recordit.co/nQX2IF2boD При этом тот же проект с теми же настрйоками нормально отрабатывает в режиме записи

  • @Qwaros А причём здесь компиляция?

  • @fox при том что в режиме записи скрипт отрабатывает нормально. следовательно проблема в скрипте при его компиляции.... могу ошибаться не особо шарю :)

  • имеется в виду компиляция самого скрипта для выполнения а не вота сборка в папку названная компиляцией в софте

  • @qwaros said in Ошибки компиляции:

    имеется в виду компиляция самого скрипта для выполнения а не вота сборка в папку названная компиляцией в софте

    Для "запуска" скрипт не компилируется, он запускается сразу. Это в режиме "записи" интерпретатор выполняет действия по очереди каждый раз возвращаясь в визуальный конструктор.

    Вы откройте консоль в браузере и выполните код

    while(true)console.log("hi")
    

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

  • @fox так вот эти самые ошибки. Т.к код скрипта бас похож больше на кашу чем на код то в нем искать ошибку не представляется возможным без изучения всех его примудростей. Если в режиме записи делал много изменений откатиться назад будет так же не реально т.к нет списка изменений и отменить какую то конкретную правку невозможно, только все разом. Если проект большой то перебирать каждое действие в поисках ошибки ну просто здец ))) А если вот как на моем примере нет ниодного действия использующего свойкод а ошибка такая еть то пофиксить ее вообще невозможно, только переписывать заново весь скрипт... крч бред выходит :(

    Для "запуска" скрипт не компилируется, он запускается сразу

    Как это? даже простейший js и тот укажет на карявую строку.... а тут выходит что бас незнает какой код исполняет? чот я не вьезжаю....

  • @qwaros Перечитайте ответ @fox, его пример не вызовет никаких синтаксических ошибок и никто его не подсветит. Повешать движок БАС можно вечным циклом, либо синтаксической ошибкой где-то в начале скрипта при том если вы указали огромное число ошибочных запусков потока. Ну еще бесконечной рекурсие, хотя из нее БАС со временем выйдет с ошибкой переполнения стека.
    Вывод:

    • Никогда не используйте вечные циклы, тоесть цикл типа while(true) использовать можно, но тогда надо ставить условие выхода после n - итераций.
    • Для отладки ставьте небольшое число ошибочных запусков потока
  • @usertrue циклов нет вообще. я терпеть ненавижу зацикливать скрипты из за того что они начинают жрать как еб*тые ))) Вот именно потому и над хоть какой то лог, хотя бы краш лог (мб и есть, подскажите где)

  • И кстати - приведенный @fox пример не подходит к текущей ситауции т.к скрипт не запускается воообще. даже поток не запускается, в скрипте специально поставил первым действием вывод в лог строки но ее нет. следовательно движок падает раньше чем запускается поток... отсюда я и сделал вывод что скрипт компилируется движком перед запуском по аналогии с zp

  • @qwaros Что значит падает? Я привел вам приме ситуации, если будет ошибка в начале скрипта и при этом число ошибочных запусков большим, то он тупо зациклится и не сможет вывести лог

  • @usertrue said in Ошибки компиляции:

    @qwaros Что значит падает? Я привел вам приме ситуации, если будет ошибка в начале скрипта и при этом число ошибочных запусков большим, то он тупо зациклится и не сможет вывести лог

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

    alt text

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

  • Хотя наверное даже не так, наверное надо просто как то разделить ошибки выполнения скрипта на две категории - логические - при успешном выполнении логики но неверном результате. экшн fail() и сопсно все остальные при которых скрипт бы падал без перезапуска потоков. Вот :)

  • @qwaros said in Ошибки компиляции:

    @usertrue циклов нет вообще. я терпеть ненавижу зацикливать скрипты из за того что они начинают жрать как еб*тые )))

    Как выяснилось позже цикл всё таки был, в количестве удачных и неудачных выполнений.

    @qwaros said in Ошибки компиляции:

    Но топик все же остается актуальным т.к этого можно избежать вполне

    Да, можно было выставить количество неудачных выполнений 1 и сразу отловить ошибку.

    @qwaros said in Ошибки компиляции:

    Хотя наверное даже не так, наверное надо просто как то разделить ошибки выполнения скрипта на две категории - логические - при успешном выполнении логики но неверном результате. экшн fail() и сопсно все остальные при которых скрипт бы падал без перезапуска потоков. Вот :)

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

    Для большинства случаев отлавливания ошибок достаточно действия "игнорирование ошибок" и условия if [[WAS_ERROR]].


    Сомневаюсь, что вы будете со мной солидарны в данном вопросе, по этому скажу сразу. Тема создана в ветке "Запросы функционала" и имеет место быть. Разработчик BAS у нас один - @support , если ему данная тема понравится, он её реализует, в том или ином виде. Остальные сообщения это лишь мнения других участников форума.

  • 4 Votes
    8 Posts
    325 Views
  • 0 Votes
    2 Posts
    323 Views
  • 0 Votes
    7 Posts
    1077 Views
  • 0 Votes
    1 Posts
    456 Views
  • 0 Votes
    6 Posts
    887 Views