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

Выявление причин вылетов без лога

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

Версия от 07:51, 17 июля 2011; Skyloader (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Этот метод может помогать выявить некоторые стабильные или нестабильные (если у вас терпения хватит) безлоговые вылеты. Сам пользуюсь методом, часто помогает. Скажу сразу, этот метод только для скриптеров, остальные не поймут, что в логе написано. Итак, будем изменять ф-цию 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

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

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