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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Apr 2009
Сообщений: 409
По умолчанию Увидеть порядок вызова функций

Здравствуйте, овзникла необходимость быстро разобраться в большом количестве чужого кода?
Сначала выбрал схему ити от главного класса по обращению к другим, и так в рекурсии. Но это очень путает и медленно. Есть ли какой то инструмент, помогающий облегчить этот процесс?
К прмиеру при запуске приложения отображает порядок вызова функций. чтобы можно было в интерактивном режиме увидеть что за что отвечает?

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

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
там где вам нужно получить цепочку вызовов функций:
Код AS3:
trace(new Error().getStackTrace());
#getStackTrace
__________________
freelance | Раздор

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
Цитата:
Сообщение от derhab Посмотреть сообщение
там где вам нужно получить цепочку вызовов функций:
Код AS3:
trace(new Error().getStackTrace());
#getStackTrace
возьму на заметку)
__________________
return this...

Старый 25.04.2013, 13:19
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 4  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Тогда уж вот эту возьмите
Код AS3:
public static function getFunctionName(e:Error):String {
			var stackTrace:String = e.getStackTrace();     // entire stack trace
			var startIndex:int = stackTrace.indexOf("at ");// start of first line
			var endIndex:int = stackTrace.indexOf("()");   // end of function name
			var suffixTrace:String=stackTrace.substring(endIndex + 3);
			startIndex=suffixTrace.indexOf("at ");
			endIndex= suffixTrace.indexOf("()");   // end of function name
			suffixTrace=suffixTrace.substring(startIndex + 3, endIndex);
 
			return suffixTrace;
		}
getFunctionName(new Error())

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

Регистрация: Apr 2009
Сообщений: 409
Спасибо, буду пробовать)

Старый 25.04.2013, 13:39
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 6  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Babylon, Вы тестировали сами, то что предлагаете?
Где там цепочка вызовов?

ну то есть понятно, так можно получить имя последней вызывающей функции в стеке.
изначально речь шла о другом немного.
__________________
freelance | Раздор


Последний раз редактировалось derhab; 25.04.2013 в 13:53.
Старый 25.04.2013, 14:42
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 7  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
derhab, тестирую постоянно
Более того. Написал две обертки для входа ni() и выхода из функции ne()

Где то в базовом классе
....
Код AS3:
public static var sp:String;
public static var nsp:int;
.....
public static function dsp():void
		{
			sp="";
			for (var i:uint=0;i<=2*nsp;i++){	
				sp=sp+" ";
			}
		}
 
public static function ni(s:String=""):void
		{
			if (s!=""){s=" # "+s}
			dsp();
			trace(sp+"->"+getFunctionName(new Error())+s);
			nsp++;
		}
		public static function ne():void
		{
			nsp--;
			dsp();
			trace(sp+"<-"+getFunctionName(new Error()));
			if (nsp<0) nsp=0;
 
		}
s - это для параметров которые хотите увидеть в трейсе

Старый 25.04.2013, 15:36
vizgl вне форума Посмотреть профиль Отправить личное сообщение для vizgl Найти все сообщения от vizgl
  № 8  
Ответить с цитированием
vizgl
 
Аватар для vizgl

Регистрация: Jun 2012
Сообщений: 70
Цитата:
Сообщение от Babylon Посмотреть сообщение
derhab, тестирую постоянно
Более того. Написал две обертки для входа ni() и выхода из функции ne()

Где то в базовом классе
....
Код AS3:
public static var sp:String;
public static var nsp:int;
.....
public static function dsp():void
		{
			sp="";
			for (var i:uint=0;i<=2*nsp;i++){	
				sp=sp+" ";
			}
		}
 
public static function ni(s:String=""):void
		{
			if (s!=""){s=" # "+s}
			dsp();
			trace(sp+"->"+getFunctionName(new Error())+s);
			nsp++;
		}
		public static function ne():void
		{
			nsp--;
			dsp();
			trace(sp+"<-"+getFunctionName(new Error()));
			if (nsp<0) nsp=0;
 
		}
s - это для параметров которые хотите увидеть в трейсе
А можно подробнее, зачем это нужно? И как в релизе вы избавляетесь от этих функций(CONFIG:: DEBUG)?
__________________
Блог: http://devizgl.blogspot.com/

Старый 25.04.2013, 16:12
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 9  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Вы не поверите у меня и в некоторых релизах они стоят. Ибо через какое-то время - год-два ты не вспомнишь логику работы приложения и тут они в самый раз

Старый 25.04.2013, 16:37
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 10  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Для проверки написал 3 функции, запускаются так:
Конструктор класса -> goSecondFunction, goSecondFunction запускает таймер, по таймеру вызывается goThirdFunction.

В goThirdFunction вызываю trace(new Error().getStackTrace()), получаю:
Код:
Error
at StackTrace/goThirdFunction()[D:\путь к классу\StackTrace.as:46]
at StackTrace/onTimerStartThird()[D:\путь к классу\StackTrace.as:39]
Выходит, работает до 1-го таймера. Если вызвать ещё и из функции, вызывающей таймер, всё ок.
Код:
goThirdFunction()
onTimerStartThird()
goSecondFunction()
конструктор()
Используя метод Babylon getFunctionName:
Код:
StackTrace/onTimerStartThird
StackTrace
Может я чего недопонял?
__________________
Нормально делай — нормально будет!

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

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

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


 


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


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