Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как отследить и пофиксить вылет

Страниц (1): [1]
 

1. Basilvg - 07 Февраля, 2020 - 05:18:56 - перейти к сообщению
Добрый день коллеги и спасибо разработчику
за программу - лучшее найденное решение под мои задачи.

Вопрос:

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

кибор+редактр стоят на втором компе (сервер) там и сделал отладку под экран и прочее (в управляющем алгоритме есть и координаты есть и картинки), все собирал в визуальном редакторе. Также, для надежности, после start стоит обработчик, определяющий открыт ли редактор документов (по картинке) если его нет то перезапускается (а по завершению цикла по goto a все идет на начало.

оставляю на ночь (выключаю монитор) и сбой происходит иногда после 15 иногда после 200 документов. Интересночто включив утром монитор вижу, что редактор закрыт а кибор мышку не шевелит. Нажав ctrl-chift-z скрипт работу прекращает (использую скомпилированный exe)

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

Вот сижу, смотрю как работает, все нормально. Ставлю на ночь и утром застаю зарытый редактор, запущенный скрипт и стоящий на месте курсор.

Подскажите пожалуйста, как, не тратя часы на визуальный поиск точки и причины сбоя, это можно устранить?

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

Спасибо!
2. Zireael - 07 Февраля, 2020 - 05:33:04 - перейти к сообщению
Включить отладку и смотреть на какой строке был вылет.
Или записывать в файл что-нибудь чтобы понять где был вылет.
3. Basilvg - 07 Февраля, 2020 - 06:14:52 - перейти к сообщению
 Zireael пишет:
Включить отладку и смотреть на какой строке был вылет.


это хорошо работает на первых прогонах - реальной отладке, когда пошагово отсматриваю, сейчас ну нет возможности по 1-2 час смотреть где идет сбой - это при написании скрипта 100+ отладочных запусков было

 Zireael пишет:

Или записывать в файл что-нибудь чтобы понять где был вылет.


как записывать? что записывать? есть есть запись лога, попрошу подробней - это идеальный подход
4. Zireael - 07 Февраля, 2020 - 07:24:10 - перейти к сообщению
 Цитата:
нет возможности по 1-2 час смотреть где идет сбой

А зачем? Кибор закроется в случае ошибки, в отладчике последней будет строка, на которой это произошло.
 Цитата:
что записывать?

Без разницы, хоть текст, хоть значения переменных. Суть примерно такая:
CODE:
loop()
{
// тут допустим findimage
write("C:\logging.txt", "findimage выполнился"); // дописать эту строку в файл
// тут допустим клик, на нём явно не будет вылета, можно ничего в файл не записывать
// тут допустим findcolor
write("C:\logging.txt", "findcolor +++"); // дописать эту строку в файл
sleep(500);
}



function write(string name_file, string text)
{
if(fopen(name_file, "a")) // открыть файл
{
fwrite(text); fwrite(ENDL); // дописать строку и перенос строки
fclose(); // закрыть файл
}
}
5. Basilvg - 07 Февраля, 2020 - 07:36:16 - перейти к сообщению
 Zireael пишет:
 Цитата:
нет возможности по 1-2 час смотреть где идет сбой

А зачем? Кибор закроется в случае ошибки, в отладчике последней будет строка, на которой это произошло.
 Цитата:
что записывать?

Без разницы, хоть текст, хоть значения переменных. Суть примерно такая:
CODE:
loop()
{
// тут допустим findimage
write("C:\logging.txt", "findimage выполнился"); // дописать эту строку в файл
// тут допустим клик, на нём явно не будет вылета, можно ничего в файл не записывать
// тут допустим findcolor
write("C:\logging.txt", "findcolor +++"); // дописать эту строку в файл
sleep(500);
}



function write(string name_file, string text)
{
if(fopen(name_file, "a")) // открыть файл
{
fwrite(text); fwrite(ENDL); // дописать строку и перенос строки
fclose(); // закрыть файл
}
}


ага, вот правильно понимаю, сделать проверку так:

1) скопировать код в кибор (без компиляции в exe)
2) поставить галку v отладка (пошагово не отмечать)
3) Включить

в случае сбоя кибор стопориться и будет показана строка кода где был сбой
далее смотрю по скрипту место и делаю вывод
2-3 повтора и понимаю систему

так?

Спасибо!
6. Zireael - 07 Февраля, 2020 - 07:40:59 - перейти к сообщению
 Цитата:
в случае сбоя кибор стопориться и будет показана строка кода где был сбой
далее смотрю по скрипту место и делаю вывод
2-3 повтора и понимаю систему
так?

Да.
7. Basilvg - 07 Февраля, 2020 - 08:02:45 - перейти к сообщению
 Zireael пишет:
 Цитата:
в случае сбоя кибор стопориться и будет показана строка кода где был сбой
далее смотрю по скрипту место и делаю вывод
2-3 повтора и понимаю систему
так?

Да.


Большое спасибо, откручиваю, наблюдаю, фиксю

Powered by ExBB FM 1.0 Final