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

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 25.06.2011, 02:31
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 1  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
По умолчанию Отладка без дебагера

Цитата:
Сообщение от iNils Посмотреть сообщение
....Но я не пользуюсь дебагерами....
Вот этот пункт заинтересовал... Я как-то без пошагового выполнения слабо себе отладку представляю. Можешь поделиться опытом?
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 25.06.2011, 02:44
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Трейсами
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 25.06.2011, 02:47
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 3  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Я как-то и то и то использую... Где-то одно удобно, где-то другое. Но спасибо за ответ.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 25.06.2011, 03:33
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
В моей практике, очень редко встречается ситуация, когда мне нужен дебагер (за полгода, ну может быть один раз). Обычно ошибки очевидны.
В данном примере, происходит имитация ситуации, когда передается пустая ссылка на спрайт, который мы хотим добавить.
Код AS3:
package ru.inils.sample {
	/*    IMPORT             *///{ /
	import flash.display.*;
	import ru.inils.logger.*;
	//}
	public class NewClassMain extends Sprite {
		/*  * CONSTRUCTOR *      *///{ /
		public function NewClassMain () {
			var s:Sprite;
			test (s);
		}
		//}
		/*  - METHOD PRIVATE     *///{ /
		private function test (s:Sprite):void {
			addChild (s);
		}
		//}
	}
}
Соответственно, я получаю RTE
Код:
TypeError: Error #2007: Параметр child не должен быть равен нулю.
	at flash.display::DisplayObjectContainer/addChild()
	at ru.inils.sample::NewClassMain/test()[D:\_Library\_Work\classes.as3\personal\ru\inils\sample\NewClassMain.as:15]
	at ru.inils.sample::NewClassMain()[D:\_Library\_Work\classes.as3\personal\ru\inils\sample\NewClassMain.as:10]
Я его копирую, и вставляю в окно своего логгера Logger:Trace
Нажмите на изображение для увеличения
Название: sampleTrace.gif
Просмотров: 120
Размер:	24.8 Кб
ID:	26750
Логгер парсирует текст и в окно Logger:Stack вставляет стек вызова. Далее, я делаю дабл клик по строкам и разбираюсь почему s был null.

Конечно, данный случай простой и ошибка очевидна. Но RTE у меня случаются редко и как правило такие.

Обычно, ошибки у меня в самом алгоритме, и те трейсы помогают вести полный лог изменений во времени и дают полную картину изменений.
Например, недавно я писал код, где одна область входила в другую и при этом должна была соответствовать ряду правил. Для проверки работы алгоритма, я вызывал тестовую функцию, которая эти правила проверяла и и выводила результат. Если где-то правило не срабатывало, выводился ошибка.
Вот пример имитации (не то, что я делал, а сама суть работы) ошибки
Код AS3:
package ru.inils.sample {
	/*    IMPORT             *///{ /
	import flash.display.*;
	import ru.inils.logger.*;
	//}
	public class NewClassMain extends Sprite {
		/*  * CONSTRUCTOR *      *///{ /
		public function NewClassMain () {
			Logger.port = 3040;
			for (var i:int = 0; i < 10; i++) {
				var s:Sprite = new Sprite ();
				if (i == 7) {
					s = null;
				}
				test (i, s);
			}
		}
		//}
		/*  - METHOD PRIVATE     *///{ /
		private function test (i:int, s:Sprite):void {
			try {
				Logger.trace (i, true)
				addChild (s);
			} catch (error:Error) {
				Logger.trace (i, false)
				Logger.traceError (error);
			}
		}
		//}
	}
}
Нажмите на изображение для увеличения
Название: sampleTrace2.gif
Просмотров: 116
Размер:	26.4 Кб
ID:	26752

После чего, я анализировал проблемный участок и устранял ошибку.

Порой, причина ошибки кроется в действиях задолго до ее появления. А трейсы помогают все эти действия фиксировать и возвращаться к ним в случаях надобности.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 25.06.2011, 03:46
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 5  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Круто, что сказать)

Я было подумал что обычный себе трейс используется.

Только я пользуюсь стандартными панельками ФД, которые "стек вызовов", "брекпоинты", "watch" вполне себе удобно. Мне к примеру проще поставить точку останова на участке в котором не уверен, чем писать какие-то юнит-тесты, дожидаясь РТЕ(которых у меня как правило тоже оч мало, а иногда наоборот провоцирую ситуацию чтоб вылетело на проблемном участке. Рефактор какой-то например, что-то изменил, вывалилось куча ошибок, исправил по списку и ок.)

Стек вызовов ведет себя аналогично этому Logger:Trace - Фиксирует что откуда вызывалось и как мы в текущей строчке оказались.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 25.06.2011, 04:19
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Кому как удобнее. Мне удобнее и быстрее с трейсами, чем разбираться в тонне информации.

Цитата:
Мне к примеру проще поставить точку останова на участке в котором не уверен, чем писать какие-то юнит-тесты, дожидаясь РТЕ
Так речь не идет об RTE. С ней и так все ясно. Хотя, как я писал выше, причина RTE была заложена задолго до ее возникновения. Но дебагер показывает состояние "здесь и сейчас", а он не покажет тебе, что было до RTE.

Вот у тебя область вышла за пределы, которые задаются динамически, например округление не так описал или еще что. RTE не будет. А ты пошлешь эту область на сервер, а он не сможет эту область физически обработать.

Или создал ты 100 экземпляров класса с различными свойствами. И только 5 из них, оказались ошибочными. Ты что, будешь каждый из 100 проверять вручную на соответствие 10 разным правилам при каждой компиляции? Или у тебя состояние объекта меняется от каждого твоего движения мышью и только на 300-ый MOUSE_MOVE у тебя происходит ошибка (речь опять не об RTE, а об ошибке в алгоритме).
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 25.06.2011, 04:32
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 7  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Ну мы слегка о разных вещах говорим. В некоторых случаях действительно не обойтись без юнит-тестов. Но в массе своей мне достаточно стека вызовов и точки останова.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 25.06.2011, 04:32
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
А у меня наоборот )
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 26.06.2011, 15:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Без дебаггера некорректно работающий код трейсами редко удаётся вылечить.

Старый 26.06.2011, 15:43
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Значит я уникум
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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