Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > dark256

Оценить эту запись

Отладка по-темному

Запись от dark256 размещена 01.02.2011 в 12:00
Обновил(-а) dark256 01.02.2011 в 13:10

Относительно вывода отладочной информации из флэшки без использования файрбагов и прочих внешних аппаратно-программных приблуд.
Достоинства:
1. Не загромождаем основную флэшку всяким дебаг-окнами, отладка видна в любой момент, без перекрытия текущих данных в рабочей флэшке.
2. Не требуется ничего устанавливать и настраивать.
3. Очень просто и удобно "выдать" юзеру отладчик - достаточно УРЛ, на котором он лежит, или просто выслать сам файл.
4. Очень просто получить с юзерам требующиеся данные в текстовом виде.

Итак сам отладчик. Внешняя флэшка, которая обычно запускается перед запуском отлаживаемого приложения:
REMOTE_DEBUGGER_LOG.rar

Код, который вставляется в рабочую флэшку в первый кадр на _level0

Код AS1/AS2:
var channelName = "_remotedbg"
 
var sending_lc:LocalConnection = new LocalConnection()		// Отправитель
sending_lc.onStatus = function(infoObject:Object) {
        switch (infoObject.level) 
		{
			case 'status' :
			break;
			case 'error' :
			break;
        }
}
 
function addDbgInfo( txt ){
		sending_lc.send( channelName , "getTRACE", txt )
}
 
function addSOKInfo( txt ){
	sending_lc.send( channelName , "getSOCKET", txt+"\n" )
}
 
function calcTotalBytes( num ) {
	_level0.loadBytesTotal += num 
	sending_lc.send( channelName ,"getBYTES", Math.round ( сумма_полученных_байтов_из_лоадеров / 1024 ) +" KB")
}
 
function fullDbgInfo( txt )
{
	sending_lc.send( channelName , "getFULL", txt )
}
Отладчик имеет 3 окна, 2 - переключаемые по кнопке APP.TRACE (процедура вывода - addDbgInfo) - SOCKET.LOG (addDbgInfo) и FULL (fullDbgInfo), открывающееся в дополнительном окне, и текстовое поле с суммой загруженных в приложение килобайт - процедура calcTotalBytes.

Кнопка "КРЕСТИК" - это кнопка "Очистить окно".

После 50секундной неактивности, в текст окна добавляется timestamp.


Как можно легко догадаться, вся отладочная информация, таким образом, достаточно наглядно и просто структуризируется и раскрашивается. В данном случае я использую три окна для:

1. Замена обычных трейсов по всей целевой области:
_level0.addDbgInfo(" <FONT COLOR='#00FF00'>LOADER START: [ "+URLREAL+" ] targetMov: "+mov+"</FONT>\n" )

2. Данные по сокету ( который есть в приложении ) идут во второе окно:
_level0.addSOKInfo( "Connecting to socket [ "+socketName+":"+socketPort+" ]" )
_level0.addSOKInfo( "<FONT COLOR='#00FFFF'>Login:OK.</FONT>" )

3. Ну и в третье окно я сбрасываю полный XML ответ сервера:
_level0.fullDbgInfo( my_xml )

Несмотря на замечания о большой ресурсоемкости localConnection, даже на офисном компе работа отладчика тормозов не вызывает. Есть тормоза при выводе ДЕСЯТКОВ строк кода при циклическом выводе, но это уже, как я понимаю, проблема всей ОС в целом.
Он работает в любом браузере (относительно отлаживаемой флэшки), в любой вкладке и просто в стэндэлон-плэере.

Все используемые в дебаггере фонты любезно позаимствованы у iNils
Вложения
Тип файла: rar REMOTE_DEBUGGER_LOG.rar (19.3 Кб, 243 просмотров)
Всего комментариев 30

Комментарии

Старый 01.02.2011 12:51 alexcon314 вне форума
alexcon314
А где сокет и что есть MAINPATH?
И что бы вам не оформить класс, вставляемый в отлаживаемую флэшку для связи с дебуггером? Я бы повесился в каждом трейсе писать "<FONT COLOR='#00FF00'>LOADER START: [ "+URLREAL+" ] targetMov: "+mov+"</FONT>\n".
ЗЫ
Цитата:
любезно позаимствованы у iNils
- это типа "любезно предоставлены iNils"?
Старый 01.02.2011 13:01 mayakwd вне форума
mayakwd
 
Аватар для mayakwd
Используйте SOS max.

Не надо ничего устанавливать — скачал, распаковал запустил, наслаждаешься.
Куча уровней трейса с фильтрацией, раскрывающиеся сообщения.
Обновил(-а) mayakwd 01.02.2011 в 13:03
Старый 01.02.2011 13:09 dark256 вне форума
dark256
 
Аватар для dark256
Цитата:
MAINPATH?
Аммм..... кусок кода выдрал у себя и кривовато адаптировал.
По сути извсего что там надо _remotedbg, getTRACE и getSOCKET - имена методов дебаггера и имя канала.
Классы, функции и штмл-тэги - это все часть ВАШЕГО клиента, которую вы можете писать на свой вкус и цвет
Я ж не продаю это, я описал простенький, но удобный метод вывода трассировок

Цитата:
Не надо ничего устанавливать — скачал, распаковал запустил, наслаждаешься.
Вот вы реально много общаетесь с ТОЛПАМИ тупых юзеров по техподдержке?
В том же ВКонтакте?
Обновил(-а) dark256 01.02.2011 в 13:11
Старый 01.02.2011 13:13 mayakwd вне форума
mayakwd
 
Аватар для mayakwd
Реально - нет.
Старый 01.02.2011 13:17 dark256 вне форума
dark256
 
Аватар для dark256
Ну а вот мне, к сожалению, приходится и очень много ))

Кстати я так и не понял как юзать этот СОС )))
Обновил(-а) dark256 01.02.2011 в 13:25
Старый 01.02.2011 13:26 iNils вне форума
iNils
 
Аватар для iNils
Ух, сколько логгеров. И каждому свой милее)
Для меня удобный самописный, интегрированный в ide логгер, а для тестеров встроенное окно в флешку.
Старый 01.02.2011 13:31 dark256 вне форума
dark256
 
Аватар для dark256
Но у меня стоит следующая задача: флэшка размещена, допустим ВКонтакте. У юзера там какие-то непонятки. Что и как - фиг поймешь. Я ему говорю - пройди на такой-то урл, запусти игру, дождись ошибки, скопируй текст оттуда-то и пришли мне. Все. Самый простейший вариант Все что интегрированов ide и туда сюда по всякому, в общем случае требует кучу пояснений и танцев с бубном, когда нужно узнать что там происходит у юзера.
Старый 01.02.2011 13:40 alexcon314 вне форума
alexcon314
Плох тот флэшер, который ни разу не писал логгера! Точно.
Старый 01.02.2011 14:05 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
Все что интегрированов ide и туда сюда по всякому, в общем случае требует кучу пояснений и танцев с бубном, когда нужно узнать что там происходит у юзера.
Вот поэтому и нужно сделать сворачиваемое окно. Для последнего проекта, мне нужно было выводить состояние буфера данных в виде таблицы, чтобы тестеры могли послать мне лог для поиска ошибки. То есть это не как обычный логгер, где все сразу, а видна только одна запись, но можно ходить по истории.



Окно можно свернуть, а в развернутом виде менять прозрачность от 30% до 100%.
Все записи можно сохранить в файл (благо 10-й плеер это позволяет), послать кому нужно и открыть.
Но кроме буфера данных, мне нужно было выводить и действия которые привели к текущему состоянию буфера. Выводить в одно окно не удобно, и я добавил второе. Но возникла проблема синхронизации между окнами. Тогда я добавил связывание между двумя окнами. Листая историю в окне №2 (на скрине), в окне №3 искалась ближайшая меньшая или равная по времени запись. И наоборот. В окне, в котором запись ищется, также выводится разница во времени между записью в активном окне.
Обновил(-а) iNils 01.02.2011 в 19:37
Старый 01.02.2011 14:40 dark256 вне форума
dark256
 
Аватар для dark256
Ну, в общем - есть много способов снять с кота шкуру (с)
К слову сказать, я для localConnection до сих пор никаких иных толковых применений не нашел

А окна отладки я до самого последнего времени встраивал во флэшку. Но неудобно. Открыл, глянул, закрыл, жамкнул что-то в интерфейсе, опять открыл, глянул... и т.п.... А так... вполне самое оно
Старый 01.02.2011 16:39 Котяра вне форума
Котяра
 
Аватар для Котяра
Для игроков/тестеров я делал кнопку - отправить сообщение администратору об ошибке.
В нём юзер описывал суть проблемы. по кнопке отправить флэшка прикрепляет к сообщению свои внутренние логи (которые ведутся флэшкой для всех, кроме того, это сообщение отправляется серверным скриптом, который кроме описания, логов флэшки ещё и прикрепляет серверные логи для этого юзера (последние действия, дампы данных и т.п.)
Старый 01.02.2011 16:51 iNils вне форума
iNils
 
Аватар для iNils
А теперь представим, что у нас лег сервер, поэтому флешка не работает, появляется окно об ошибке, тестер жмет кнопку отправить и ... лог никуда не уходит, потому что сервер лежит.
Старый 01.02.2011 16:53 mayakwd вне форума
mayakwd
 
Аватар для mayakwd
Обычно под такие нужды выделяют отдельный сервер, как мне кажется.
Старый 01.02.2011 17:05 Котяра вне форума
Котяра
 
Аватар для Котяра
2iNils - в таких случаях, надобность в логах от клиента стремится к нулю)
Старый 01.02.2011 17:17 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
2iNils - в таких случаях, надобность в логах от клиента стремится к нулю)
См пример ниже.
Цитата:
Обычно под такие нужды выделяют отдельный сервер, как мне кажется.
Так, если произошла другая ошибка, а лег сервер для логов?
А если сервер всего один?
А если... тут надо уточнить, о чем идет речь. Я говорю про отладку программы перед запуском. Когда тестеров человек 5 и они гоняют флешку и так и этак. Ошибки может и не возникнуть. Выделять под это сервер или даже хранить эти ошибки на том же сервере? На фига. Тестер сохранил файл, кинул его мне, я сразу посмотрел и поправил.

Если вы говорите о багрепорте со стороны пользователей, то конечно, такая схема нужна.
Старый 01.02.2011 17:49 Котяра вне форума
Котяра
 
Аватар для Котяра
Я говорил о багрепортах от юзеров на релизе. Для тестеров/админов есть ещё и кнопочка - посмотреть лог)
Старый 01.02.2011 18:08 dark256 вне форума
dark256
 
Аватар для dark256
У нас есть лог на сервере. Допустим в пятницу вечером пошел глюк.... в ПН днем там как правило уже фиг чего найдешь. Ибо там полное собрание сочинений В.И.Ленина вперемешку с Войной и Миром. Причем в общем случае все на китайском )))

Слать отчет на сервер на автомате..... ну да, есть и такое.
Но я обычно в критических случаях зову юзера в аську и там уже пингую индивидуально.
Старый 01.02.2011 18:47 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
@iNils, а где скрины то?
Старый 01.02.2011 19:39 iNils вне форума
iNils
 
Аватар для iNils
Цитата:
@iNils, а где скрины то?
Обновил.
Старый 01.02.2011 20:57 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Ащащащащ.
iNils, не думаешь выложить это дело в опен-сурс? =)
Я последнее время люблю брать всё готовое.)
Старый 01.02.2011 21:45 iNils вне форума
iNils
 
Аватар для iNils
Чуть позже. Все писалось на скорую руку, надо причесать сначала.
Старый 02.02.2011 19:25 etc вне форума
etc
 
Аватар для etc
У нас сервер для логов хрен ляжет, там единственная строчка для отправки лога по мылу.
Старый 02.02.2011 23:26 dimarik вне форума
dimarik
 
Аватар для dimarik
Засмотрелся, как вы одновременно головы наклонили.
Старый 02.02.2011 23:29 etc вне форума
etc
 
Аватар для etc
Димка, ты не в нашей песочнице, ты вон с Котярой на пару два брата-акробата
Старый 02.02.2011 23:31 dimarik вне форума
dimarik
 
Аватар для dimarik
Я флипнулся. Взгляни.
Старый 02.02.2011 23:58 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
Цитата:
Засмотрелся, как вы одновременно головы наклонили.
5 баллов)
Старый 03.02.2011 00:05 dark256 вне форума
dark256
 
Аватар для dark256
Одновременно головы это вот:
http://www.technologywithpassion.com/about-us/team/
мышью вокруг поводите. кстати прикольно все выглядит при клике по фотке.
Надо для форума аватары также сделать
Старый 03.02.2011 00:50 iNils вне форума
iNils
 
Аватар для iNils
Да у Димы тоже наклон вправо
Старый 03.02.2011 17:45 etc вне форума
etc
 
Аватар для etc
Димка, че, Котяру бросил?
Старый 03.02.2011 20:15 Котяра вне форума
Котяра
 
Аватар для Котяра
Никто меня не бросал)
 

 


Часовой пояс GMT +4, время: 21:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.