|
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Удаленная отладка
Здравствуйте, имеется flash игра, внутри нее стоит слушатель исключений, который сохраняет их на сервер.
Но понять точно что и где глюкануло, по этому логу очень сложно, просто видно наличие ошибок. loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, function(e:UncaughtErrorEvent) { e.preventDefault(); saveStat('clientError', e.error.code+e.error.message); }); Как можно извлечь максимум информации ,о том где сидят баги? |
|
|||||
[+4 06.05.14]
|
Писать более красивый и понятный код. На самом деле понять легко, в исключении пишется название метода, ага - уже неплохо. Далее если метод не на 1000 строк ( а это заведомо плохой код ) - то по логике можно понять где возможность падения на null pointer или типа того.
Я уже давно использую данный способ для отладки, и в 90% случаях сразу понятно что и где падает, в редких 10% приходится более деатальный анализ проводить, форсировать отправку данных и т.п.
__________________
Марк Tween |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
В том то и дело, что выводит только код ошибки и ее название, место где она произошла - нету. в документации написано что getStackTrace работает только в debug версии и AIR
|
|
|||||
Да тоже сталкивался с этой проблемой и тоже пытался отправить данные по ошибке на сервер. С релизной версией решения нет, можно только попросить юзера у которого валится ошибка поставить дебажную версию плеера.
|
|
|||||
[+4 06.05.14]
|
Не придумывайте ! Все в релизной пишется! Не пишется ТОЛЬКО конкретная строчка кода, а метод и класс в котором упало пишется! Вечером скину рабочий код
Добавлено через 3 часа 3 минуты private static function uncaughtErrorHandler(e:UncaughtErrorEvent):void { e.preventDefault(); errorString += e.error.getStackTrace() + "\n\n"; field.htmlText = errorString; if (e.error is Error) { var error:Error = e.error as Error; errorString += error.message + "\n"; } else if (e.error is ErrorEvent) { var errorEvent:ErrorEvent = e.error as ErrorEvent; errorString += errorEvent.text + "\n"; } else { errorString += e.error.toString() + "\n"; } field.htmlText = errorString; } Добавлено через 3 часа 5 минут Да и кстати, это неоптимизированная часть, вы можете просто отработать getStackTrace() и все. В релизе будет ОК!
__________________
Марк Tween |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Спасибо, скопмелировал код под 11.5 версию плеера. Но влог по прежнему идет null. У игроков как я понимаю тоже должна стоять версия 11.5+ , у тех кого младше - просто не работает?
|
|
|||||
Да точно, погуглил, http://stackoverflow.com/questions/1...e-flash-player я тогда работал с более младшей версией плеера. 11.5+ возвращает stacktrace. И swf-version должна быть не ниже 18.
|
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Спасибо, теперь работает)
|
Часовой пояс GMT +4, время: 23:44. |
|
« Предыдущая тема | Следующая тема » |
|
|