Занимаюсь. Вырезаю части кода и тестирую. Отладчик место не показывает.
Вполне вероятно что это где то не в коде кибор..
21. Kibor - 23 Мая, 2018 - 16:53:26 - перейти к сообщению
22. AdryV - 25 Мая, 2018 - 07:19:25 - перейти к сообщению
Kibor пишет:
Вполне вероятно что это где то не в коде кибор..
значит где то в коде кибора должна быть заглушка на этот случай, что бы не вылетала крит ошибка...
пс....
CODE:
int rerere=0;
int savezapisat=0;
loop()
{
if(gettime()-savezapisat>=60000)
{
zapisatlog();
savezapisat=gettime();
}
rerere++;
sleep(50);
}
function zapisatlog()
{
if(fopen("log111121111999912.txt", "a")!=0)
{
fwrite(format(rerere));
fwrite(ENDL);
fclose();
}
}
int savezapisat=0;
loop()
{
if(gettime()-savezapisat>=60000)
{
zapisatlog();
savezapisat=gettime();
}
rerere++;
sleep(50);
}
function zapisatlog()
{
if(fopen("log111121111999912.txt", "a")!=0)
{
fwrite(format(rerere));
fwrite(ENDL);
fclose();
}
}
этот код все еще работает тоисть с/по:
19 мая 2018 г., 6:30:07
25 мая 2018 г., 15:11:22
на данный момент rerere=10990353
буду ждать как всегда гдето около 13-15 миллионов
еще больше бы написал но решил воздержаться
псс....
думаю теперь заметна огромная разница в работе самого скрипта и циклов.....
23. Kibor - 25 Мая, 2018 - 11:26:39 - перейти к сообщению
AdryV пишет:
значит где то в коде кибора должна быть заглушка на этот случай, что бы не вылетала крит ошибка...
Подскажите способ продолжать работать программу (заглушку) после того как она вылетела..
А обнаруженная мной причина как то не соизволяла докладывать заранее Кибору..
Короче куча многочасовых тестов и копания в коде выявила проблему в классе CString C++
(не путать с string Кибор).
Это проблема C++. Быстрее всего из за выделения нового буфера при изменение строки и некорректного обращения со старым. Правда это выявляется при ооочень большом количестве циклов.
Отказ от класса CString в узких местах и реализация путем прямого копирования в буфер по адресу вроде как устранила эту ошибку + прибавила скорости выполнения скрипта. При чем этот тест был последним из возможных. По крайне мере у меня вылетать перестал такой скрипт
CODE:
loop()
{
}
{
}
Хотя вылетал после нескольких часов работы. Естественно без слипа.
По поводу скорости..
Раньше выполнение кода у меня занимало 5242 мсек.
Сейчас 2964 мсек.
CODE:
int tt=gettime();
for(int a=0; a<100000; a++)
{
}
messagebox (gettime()-tt);
for(int a=0; a<100000; a++)
{
}
messagebox (gettime()-tt);
В случае если вылеты все же будут, то где искать больше не знаю. Пишите скрипты с нормальными слипами.
24. AdryV - 30 Мая, 2018 - 08:27:47 - перейти к сообщению
Kibor пишет:
Отказ от класса CString в узких местах и реализация путем прямого копирования в буфер по адресу вроде как устранила эту ошибку + прибавила скорости выполнения скрипта
ошибку не устранило в крайнем случае у меня....
я уж запускал огрызок с циклом он у меня набирал 692113452 и это я сам его остановил через 7 часов тоисть как не крути Среда кибор стала лучше и стабильней работать.....
но вот когда запускаю своего бота он пару раз крашнулся на 11 потом на 15, третий раз на 24-х, четвертый раз проработал без запинки 28 часов....
сейчас уже 4-й день тестов
код бота изменил сильно напичкал кучи слипов и постарался меньше выполнять чтения/записи из памяти игры(так как у меня весь бот на этом основан много пришлось переделывать)
в общем пока что тестирую... но если и эта версия крашнется на 24-36 часах работы то мне кажется что у вас в среде может быть еще одна ошибка иль хз как это назвать....
насчет большего количества циклов что бы под этим подразумеваете?
у меня в боте всего около 50 циклов только FOR
из них только 5 объемные и вызываются часто 1-3 сек ну и приблизительно обрабатывают 100 номеров по 5-10 функций readmemory
остальные лишь раз вызываются и при старте либо по нажатию кнопки
пс... слипы не добавлял в циклы
Kibor пишет:
По поводу скорости..
Раньше выполнение кода у меня занимало 5242 мсек.
Сейчас 2964 мсек.
Раньше выполнение кода у меня занимало 5242 мсек.
Сейчас 2964 мсек.
скорости прибавилось за это огромный плюс
25. Kibor - 30 Мая, 2018 - 08:31:26 - перейти к сообщению
AdryV пишет:
насчет большего количества циклов что бы под этим подразумеваете?
Циклов это просто так выразился, так как тестировал на loop
Речь идет о количестве строк, выполняемых за все время работы.
Слипы просто делают это количество меньше за одинаковое время, так как какую то часть времени программа спит, а не крутит вхолостую где не надо.
26. AdryV - 01 Июля, 2019 - 04:57:46 - перейти к сообщению
ну в общем этот очень противный баг все еще существует......
учитывая сколько времени уже прошло.... я некоторые функции поубирал код оптимизировал, но также добавил и новые функции, все также крашится скомпиленый экзе через 27-50 часов в зависимости от мощности ПК(более мощный крашится быстрее так как быстрее обрабатывает скрипт)
надеюсь что вы все же найдете ошибку
учитывая сколько времени уже прошло.... я некоторые функции поубирал код оптимизировал, но также добавил и новые функции, все также крашится скомпиленый экзе через 27-50 часов в зависимости от мощности ПК(более мощный крашится быстрее так как быстрее обрабатывает скрипт)
надеюсь что вы все же найдете ошибку
27. Kibor - 01 Июля, 2019 - 05:12:48 - перейти к сообщению
AdryV пишет:
надеюсь что вы все же найдете ошибку
А я надеюсь что вы найдете включив отладку.
28. AdryV - 01 Июля, 2019 - 05:17:37 - перейти к сообщению
Kibor пишет:
А я надеюсь что вы найдете включив отладку.
отладка не выявляет этот баг я уверен на 100%. так как баг происходит не изза ошибки в коде написанный мной а он происходит из+-за того что гдето у вас в среде гдето нет сброса какогото параметра!!!!!!!!
не проверял но возьму проверю..... хай хоть и на этот тест уйдет больше времени раз в 10.
сейчас запустил этот код
CODE:
int pos_size_static0[1][4];
string text_static0[1];
pos_size_static0[0][0]=34; pos_size_static0[0][1]=26; pos_size_static0[0][2]=175; pos_size_static0[0][3]=20;
text_static0[0]="Òåêñò 0";
//////////
createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Äèàëîã", 835, 390, 250, 111, 1, 1);
//
int f[100];
char a[10000];
string b = "asdr";
int d=0;
loop()
{
text_static0[0]=format(d);
d++;
}
string text_static0[1];
pos_size_static0[0][0]=34; pos_size_static0[0][1]=26; pos_size_static0[0][2]=175; pos_size_static0[0][3]=20;
text_static0[0]="Òåêñò 0";
//////////
createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Äèàëîã", 835, 390, 250, 111, 1, 1);
//
int f[100];
char a[10000];
string b = "asdr";
int d=0;
loop()
{
text_static0[0]=format(d);
d++;
}
буду ждать 3 дня краша!!
(Добавление)
Kibor пишет:
А я надеюсь что вы найдете включив отладку.
в собранyом exe не включить отладку! не вводите в заблуждение
(Добавление)
даже если запустить отладку в самой среде вы уверены на 100% что сама отладка не крашнется за компанию?
29. Kibor - 01 Июля, 2019 - 05:28:30 - перейти к сообщению
AdryV пишет:
в собранyом exe не включить отладку! не вводите в заблуждение
А что, через кибор нет вылета?
AdryV пишет:
отладка не выявляет этот баг я уверен на 100%. так как баг происходит не изза ошибки в коде написанный мной а он происходит из+-за того что гдето у вас в среде гдето нет сброса какогото параметра!!!!!!!!
Я не знаю из за чего что то вылетает.
Отладка может показать функцию в которой вылет. Это ее смысл.
Это что, вылетает из за записи в немодал диалог что ли?
30. Zireael - 01 Июля, 2019 - 05:29:33 - перейти к сообщению
Цитата:
d++;
Выход за пределы int не может привести к вылету?