Да, было бы удобно. У меня временные фиксы, оборачиваю функции в игнорирование всегда, на случай имэйдж эрор, ошибок памяти. Но и по игнорированию бывали случаи когда ид не не вылезает в лог для дебага.
Получить список всех созданных переменных, отладка
-
Какие средства доступны для отладки уже в процессе работы скрипта (в режиме запуска).
Т.е. я беру оборачиваю весь скрипт в отлов ошибки (словить не обрабатываемое исключение), если ошибка была, то хочу сохранить принт скрин страницы (это есть), содержимое всех переменных (это хз), ИД ошибки или что-то, что укажет на место ошибки (сообщение из лога..). -
@out Все переменные и их значения можно получить выполнив
var AllVariablesTable = Object.keys(this) .filter(function(e){return e.indexOf("VAR_") == 0}) .reduce(function(all,one){ try { all[one.slice(4)] = eval(one) }catch(e) { all[one.slice(4)] = "undefined" } return all; },{}) log(JSON.stringify(AllVariablesTable))что укажет на место ошибки (сообщение из лога..).
Я сделаю вместе с WAS_ERROR и ERROR_STRING переменную для ид действия, на котром произошла ошибка. Это когда будет визуализация ид действий, сейчас они есть, но только в коде.
-
@mansory333 said in Получить список всех созданных переменных, отладка:
@support а можете добавить исключения?
Не добавлять некоторые переменные. К примеру переменные с base64 json объекты и тд..дак код же в открытом виде, добавляйте условия какие угодно
-
@Fox Кое как сделал, js знаю плохо
var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML"] var AllVariablesTable = Object.keys(this) .filter(function(e){return e.indexOf("VAR_") == 0}) .reduce(function(all,one){ try { if(iskl.indexOf(one.slice(4)) == -1 ){ all[one.slice(4)] = eval(one) } }catch(e) { all[one.slice(4)] = "undefined" } return all; },{}) var gg = JSON.stringify(AllVariablesTable)Но не могу понять как его в список сохранять в тхт
Результат
{"CYCLE_INDEX":0,"FOREACH_DATA":"","FOR_EACH_CSS":">NOTDEFINED>","FOR_EACH_MATCH":">NOTDEFINED>","FOR_EACH_XPATH":">NOTDEFINED>","WAS_ERROR":false,"LAST_ERROR":"","ERROR_ID":0,"NEW_LIST":"","TIME":1608411092,"HEX":["#CADABA"],"THREAD_INDEX":1}Не знаю за что зацепится. переменные разделены запятыми, В саблайме можно через запятые сделать каждую переменную с новой строки, но если в значении есть "," то все ломается.
Не подскажешь как сделать?
upd
Посмотрел хорошенько на результат. Что то очень похож на json)
Короче перевел его в json объектСпасибо за помощь))
-
@mansory333 said in Получить список всех созданных переменных, отладка:
@Fox Помоги пожалуйста, код выше не работает в режиме Запуска
Тестовый скрипт
test3.xmlПеременные BAS объявляются без приставки var

Скорее всего данный метод устарел в принципе, попробуйте выполнить код:
var AllVariablesTable = Object.keys(this) log(JSON.stringify(AllVariablesTable))
-
@mansory333 said in Получить список всех созданных переменных, отладка:
@Fox Проверил, в режиме запуска работает.
И что именно этот "рабочий" код выдал в лог?
-
@mansory333 said in Получить список всех созданных переменных, отладка:
Ну, я этот же скриншот и приложил в своём сообщении:

Присмотритесь, где в значении этого кода названия ваших переменных?
-
@Fox Там нет моих переменных..
И в логе массив, а там был объектЭто в режиме Запуска нет моих переменных, а в режиме Запись есть
И как же их получить в режиме запуска?
-
@mansory333 said in Получить список всех созданных переменных, отладка:
@Fox Там нет моих переменных..
И в логе массив, а там был объектА вы загуглите метод Object.keys()
Это в режиме Запуска нет моих переменных, а в режиме Запись есть
И как же их получить в режиме запуска?Я же об этом и говорю, скорее всего ни как
-
А вы загуглите метод Object.keys()
Загуглил, но не понятно как его связать с режимом Запуск.. Ну да ладно, решил пойти по другой дороге.
Запускать этот код по завершении скрипта
var AllVariablesTable = Object.keys(this) [[GG]] = JSON.parse(JSON.stringify(AllVariablesTable)) var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML","CYCLE_INDEX"] var perem = [] **тут кубик foreach** one = [[FOREACH_DATA]] if(one.substr(0, 4) === "VAR_" && iskl.indexOf(one.substr(4)) == -1){ log(iskl.indexOf(one.substr(4)) == -1) perem.push(one) }В итоге имеем массив с переменными вида VAR_NEW_VARIABLE
При втором запуске скрипта и появлении ошибки читаем тхт с переменными и ...
Я остановился тут. Надо как то создать объект из каждого элемента массива.
Проблема в том, что не могу добавить в объект
obj.VAR_NEW_VARIABLE = eval(VAR_NEW_VARIABLE)Простите за мой гвно код)
obj.perem = eval(perem[i])
Вот так значение переменной правильное, а вот ключ как изменить -
@mansory333 said in Получить список всех созданных переменных, отладка:
А вы загуглите метод Object.keys()
Загуглил, но не понятно как его связать с режимом Запуск.. Ну да ладно, решил пойти по другой дороге.
Вы спросили почему этот код возвратил массив, а не объект, я ответил почему
Запускать этот код по завершении скрипта
var AllVariablesTable = Object.keys(this) [[GG]] = JSON.parse(JSON.stringify(AllVariablesTable)) var iskl = ["SCREENSHOT_BASE64","DATA_JSON","SAVED_PAGE_HTML","CYCLE_INDEX"] var perem = [] **тут кубик foreach** one = [[FOREACH_DATA]] if(one.substr(0, 4) === "VAR_" && iskl.indexOf(one.substr(4)) == -1){ log(iskl.indexOf(one.substr(4)) == -1) perem.push(one) }В итоге имеем массив с переменными вида VAR_NEW_VARIABLE
При втором запуске скрипта и появлении ошибки читаем тхт с переменными и ...
Я остановился тут. Надо как то создать объект из каждого элемента массива.
Проблема в том, что не могу добавить в объект
obj.VAR_NEW_VARIABLE = eval(VAR_NEW_VARIABLE)Простите за мой гвно код)
obj.perem = eval(perem[i])
Вот так значение переменной правильное, а вот ключ как изменитьВы меня тролите чтоли? Я говорю, что в окружении "this" сейчас нет локальных переменных BAS'a, что в режиме "запуск" не получить от них данные, раз их нет в окружении!
-
@Fox Я вас не понимаю.
К примеру есть у меня тхт файл и в нем строка VAR_NEW_VARIABLE
Разве я не могу читать файл в середине скрипта.
Получить значение переменной в данный момент
var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)
И записать переменную error в папку error для отладки.
Так как баги не всегда в режиме Записи появляются -
@mansory333 said in Получить список всех созданных переменных, отладка:
@Fox Я вас не понимаю.
К примеру есть у меня тхт файл и в нем строка VAR_NEW_VARIABLE
Разве я не могу читать файл в середине скрипта.
Получить значение переменной в данный момент
var error = [VAR_NEW_VARIABLE] = eval(VAR_NEW_VARIABLE)
И записать переменную error в папку error для отладки.
Так как баги не всегда в режиме Записи появляютсяПолучить значение вы можете, но вот получить список всех переменных нет. Если вы хотите знать в определённый момент времени значение определённых переменных, то это делается элементарно через eval()
-
@Fox said in Получить список всех созданных переменных, отладка:
знать в определённый момент времени значение определённых переменных
да, хочу знать.
Не подскажите как через eval() сделать?


