Выявление причин вылетов без лога — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

Выявление причин вылетов без лога — различия между версиями

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск
м (Правки 85.174.65.189 (обсуждение) откачены к версии Призрак)
Строка 31: Строка 31:
  
 
'''Автор статьи: SkyLoader'''
 
'''Автор статьи: SkyLoader'''
О кстати! какие у кого есть варианты определения ошибок ссылающихся на _g.script, подскажите, это самая противная ошибка
 
s.t.a.l.k.e.r\gamedata\scripts\_g.script:1186: attempt to call global 'dbglog' (a nil value)
 
а что конкретно я не могу понять. Выше указанным способом ловить её смысла нет, так как лог и так нормально пишется и ничего нового не добавит кроме uncnow! Спасибо
 
  
 
[[Категория:Скрипты]]
 
[[Категория:Скрипты]]

Версия 12:44, 21 декабря 2011

Этот метод может помогать выявить некоторые стабильные или нестабильные (если у вас терпения хватит) безлоговые вылеты. Сам пользуюсь методом, часто помогает. Скажу сразу, этот метод только для скриптеров, остальные не поймут, что в логе написано. Итак, будем изменять функцию printf() в файле _g.script. Смотрим ее и приводим к следующему виду:

 
function printf(fmt,...)
local con = get_console()
con:execute(string.gsub(string.format(fmt,...), " ", "_"))
con:execute("flush")
end
 

Таким образом, в лог принудительно пишется вся информация, идущая в консоль в процессе игры.

Запускаем игру и играем/загружаем сейв. Игра будет тормозить, потому что в лог идет очень много информации. Делаем наше черное дело, при котором вылетаем, ну и ловим вылет. Смотрим лог и видим, что в нем осталось последнее действие.


После выявления вылета нам нужно все вернуть обратно, чтобы игра не тормозила и не засоряла лог. Просто закомментируем строки с execute, чтобы было так:

 
function printf(fmt,...)
--local con = get_console()
--con:execute(string.gsub(string.format(fmt,...), " ", "_"))
--con:execute("flush")
end
 

Вот, в принципе, и все.

Кстати, таким образом можно узнавать причины вылетов с логом, ругающимся на _g.script.

Автор статьи: SkyLoader

Другие места
LANGUAGE