Добрый день коллеги и спасибо разработчику
за программу - лучшее найденное решение под мои задачи.
Вопрос:
написал скрипт, сделал отладку (кибор по кругу гоняет документы через специальный редактор), но, после нескольких кругов происходит вылет а именно
кибор+редактр стоят на втором компе (сервер) там и сделал отладку под экран и прочее (в управляющем алгоритме есть и координаты есть и картинки), все собирал в визуальном редакторе. Также, для надежности, после start стоит обработчик, определяющий открыт ли редактор документов (по картинке) если его нет то перезапускается (а по завершению цикла по goto a все идет на начало.
оставляю на ночь (выключаю монитор) и сбой происходит иногда после 15 иногда после 200 документов. Интересночто включив утром монитор вижу, что редактор закрыт а кибор мышку не шевелит. Нажав ctrl-chift-z скрипт работу прекращает (использую скомпилированный exe)
при этом все таймеры энергосбережения выключены, режимов засыпания ни на одном устройстве нет, отладку уже сделал и все видимые баги пофиксил. Пытался играть паузами до после, на 500 мс все сильно устойчивей но в целом сбои ночью как были так и есть.
Вот сижу, смотрю как работает, все нормально. Ставлю на ночь и утром застаю зарытый редактор, запущенный скрипт и стоящий на месте курсор.
Подскажите пожалуйста, как, не тратя часы на визуальный поиск точки и причины сбоя, это можно устранить?
Может идеи по логированию или логики обработки таких зависаний. Наблюдать визуально нереально уже, так как может и 2 часа пройти нормальной работы (много циклов) до стопа
Спасибо!
1. Basilvg - 07 Февраля, 2020 - 05:18:56 - перейти к сообщению
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(); // закрыть файл
}
}
{
// тут допустим 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(); // закрыть файл
}
}
{
// тут допустим 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 повтора и понимаю систему
так?
далее смотрю по скрипту место и делаю вывод
2-3 повтора и понимаю систему
так?
Да.
7. Basilvg - 07 Февраля, 2020 - 08:02:45 - перейти к сообщению
Zireael пишет:
Цитата:
в случае сбоя кибор стопориться и будет показана строка кода где был сбой
далее смотрю по скрипту место и делаю вывод
2-3 повтора и понимаю систему
так?
далее смотрю по скрипту место и делаю вывод
2-3 повтора и понимаю систему
так?
Да.
Большое спасибо, откручиваю, наблюдаю, фиксю