@SatoshiMoto we all agree upon that shelf. Linux support would bring large new user.
Ошибки компиляции
-
@qwaros said in Ошибки компиляции:
имеется в виду компиляция самого скрипта для выполнения а не вота сборка в папку названная компиляцией в софте
Для "запуска" скрипт не компилируется, он запускается сразу. Это в режиме "записи" интерпретатор выполняет действия по очереди каждый раз возвращаясь в визуальный конструктор.
Вы откройте консоль в браузере и выполните код
while(true)console.log("hi")Вкладка у вас почти сразу зависнет, но ошибки в коде ни какой нет, зато есть логическая ошибка бесконечного цикла. Тоже самое и в BAS, что конкретно нужно отлавливать в ошибках логики скрипта?
-
@fox так вот эти самые ошибки. Т.к код скрипта бас похож больше на кашу чем на код то в нем искать ошибку не представляется возможным без изучения всех его примудростей. Если в режиме записи делал много изменений откатиться назад будет так же не реально т.к нет списка изменений и отменить какую то конкретную правку невозможно, только все разом. Если проект большой то перебирать каждое действие в поисках ошибки ну просто здец ))) А если вот как на моем примере нет ниодного действия использующего свойкод а ошибка такая еть то пофиксить ее вообще невозможно, только переписывать заново весь скрипт... крч бред выходит :(
Для "запуска" скрипт не компилируется, он запускается сразу
Как это? даже простейший js и тот укажет на карявую строку.... а тут выходит что бас незнает какой код исполняет? чот я не вьезжаю....
-
@qwaros Перечитайте ответ @fox, его пример не вызовет никаких синтаксических ошибок и никто его не подсветит. Повешать движок БАС можно вечным циклом, либо синтаксической ошибкой где-то в начале скрипта при том если вы указали огромное число ошибочных запусков потока. Ну еще бесконечной рекурсие, хотя из нее БАС со временем выйдет с ошибкой переполнения стека.
Вывод:- Никогда не используйте вечные циклы, тоесть цикл типа while(true) использовать можно, но тогда надо ставить условие выхода после n - итераций.
- Для отладки ставьте небольшое число ошибочных запусков потока
-
И кстати - приведенный @fox пример не подходит к текущей ситауции т.к скрипт не запускается воообще. даже поток не запускается, в скрипте специально поставил первым действием вывод в лог строки но ее нет. следовательно движок падает раньше чем запускается поток... отсюда я и сделал вывод что скрипт компилируется движком перед запуском по аналогии с zp
-
@usertrue said in Ошибки компиляции:
@qwaros Что значит падает? Я привел вам приме ситуации, если будет ошибка в начале скрипта и при этом число ошибочных запусков большим, то он тупо зациклится и не сможет вывести лог
Пардонте за тугость )) Помогло ограничение неуспешных выполнений отловить ошибку! Но топик все же остается актуальным т.к этого можно избежать вполне -

Как видно ошибка действительно в скрипте, не определена переменная. И это можно было смело не перезапускать поток и выплюнуть в лог.... но почему то бас щитает это норм и перезапускает поток...
-
Хотя наверное даже не так, наверное надо просто как то разделить ошибки выполнения скрипта на две категории - логические - при успешном выполнении логики но неверном результате. экшн fail() и сопсно все остальные при которых скрипт бы падал без перезапуска потоков. Вот :)
-
@qwaros said in Ошибки компиляции:
@usertrue циклов нет вообще. я терпеть ненавижу зацикливать скрипты из за того что они начинают жрать как еб*тые )))
Как выяснилось позже цикл всё таки был, в количестве удачных и неудачных выполнений.
@qwaros said in Ошибки компиляции:
Но топик все же остается актуальным т.к этого можно избежать вполне
Да, можно было выставить количество неудачных выполнений 1 и сразу отловить ошибку.
@qwaros said in Ошибки компиляции:
Хотя наверное даже не так, наверное надо просто как то разделить ошибки выполнения скрипта на две категории - логические - при успешном выполнении логики но неверном результате. экшн fail() и сопсно все остальные при которых скрипт бы падал без перезапуска потоков. Вот :)
Спорная ситуация. Пример всё с той же не найденной переменной, если в скрипте есть функция, которая из за условий выполняется редко, то падать поток будет крайне редко. И при вашей логике поток не должен при этом перезапускаться. В итоге скрипт будет работать и дальше, но с меньшим количеством потоков при каждой ошибке.
Для большинства случаев отлавливания ошибок достаточно действия "игнорирование ошибок" и условия if [[WAS_ERROR]].
Сомневаюсь, что вы будете со мной солидарны в данном вопросе, по этому скажу сразу. Тема создана в ветке "Запросы функционала" и имеет место быть. Разработчик BAS у нас один - @support , если ему данная тема понравится, он её реализует, в том или ином виде. Остальные сообщения это лишь мнения других участников форума.