|
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Увидеть порядок вызова функций
Здравствуйте, овзникла необходимость быстро разобраться в большом количестве чужого кода?
Сначала выбрал схему ити от главного класса по обращению к другим, и так в рекурсии. Но это очень путает и медленно. Есть ли какой то инструмент, помогающий облегчить этот процесс? К прмиеру при запуске приложения отображает порядок вызова функций. чтобы можно было в интерактивном режиме увидеть что за что отвечает? |
|
|||||
там где вам нужно получить цепочку вызовов функций:
#getStackTrace |
|
|||||
Цитата:
__________________
return this... |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Тогда уж вот эту возьмите
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()) |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
Спасибо, буду пробовать)
|
|
|||||
Babylon, Вы тестировали сами, то что предлагаете?
Где там цепочка вызовов? ну то есть понятно, так можно получить имя последней вызывающей функции в стеке. изначально речь шла о другом немного. Последний раз редактировалось derhab; 25.04.2013 в 13:53. |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
derhab, тестирую постоянно
Более того. Написал две обертки для входа ni() и выхода из функции ne() Где то в базовом классе .... 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; } |
|
|||||
Регистрация: Jun 2012
Сообщений: 70
|
Цитата:
__________________
Блог: http://devizgl.blogspot.com/ |
|
|||||
[+1 25.10.13]
[+4 18.03.14] |
Вы не поверите у меня и в некоторых релизах они стоят. Ибо через какое-то время - год-два ты не вспомнишь логику работы приложения и тут они в самый раз
|
|
|||||
Регистрация: 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] Используя метод Babylon getFunctionName: Может я чего недопонял?
__________________
Нормально делай — нормально будет! |
Часовой пояс GMT +4, время: 02:13. |
|
« Предыдущая тема | Следующая тема » |
|
|