PDA

Просмотр полной версии : как настроить FDTracer для FD на Vista


Волгоградец
05.10.2008, 14:07
Привет.
Вобщем на ХР проблем не было. Поставил FD 3 beta 9 на Висту, этот плагин не работает.
Создал документ здесь:
C:\Users\{user}\AppData\Roaming\Macromedia\Flash Player\Logs\flashlog.txt
и здесь:
C:\Users\{user}\mm.cfg
Путь прописал в свойствах плагина.
Во flashlog ничего не записывается. Кто сталкивался, озовитесь.

P.S.: на форуме FD есть ссылка на плагин fdb. Этот плагин помимо всего прочего добавляет trace панель - на скринах видел. У меня почему-то нет этой панели.

iNils
05.10.2008, 14:09
А в чем удобство FDTracer? Бесполезный ведь плагин.

Волгоградец
05.10.2008, 14:28
Просто привычка. К меня косяк какой-то был и в output не выводил трейс. Я поставил FDTracer. Так вот и полюбил его.
Кстати, iNils, я может не в теме, при работе с мтаском можно было выводить трейс в панель results (ты подробную инструкцию давал по настройке) - и указывались класс и строка ошибки. В AS3 этого нет, ведь так?

iNils
05.10.2008, 14:45
Нет. Но сделать можно, я уже накидал себе плагин для FD, который выводит трейс в мою панель с помощью кастомного класса + вернул возможность перехода с трейса на строку и класс, которые этот трейс вызвал. Как доведу до ума, выложу.
Сейчас советую использовать внешний трейсер (очень хороший) alcon (http://blog.hexagonstar.com/alcon/)

Волгоградец
05.10.2008, 15:07
О, сейчас попробую. Спасибо.

Волгоградец
05.10.2008, 23:24
Поставил alcon. Работает. Но перед каждым трейсом выводится тэг [info]. Подозреваю вместо него должны быть имя класса, номер строки и т.д. Может надо настроить?

iNils
06.10.2008, 00:01
Нет. info это уровень важности сообщения: debug, info, warn, error, fatal.
Для вывода строки и класса, надо написать

try {
var error:Error = new Error (msg);
var str:String = error.getStackTrace ();
...
потом парсить
} catch (error:Error) {

}
и получить строку с цепочкой методов, которые вызвали трейс и распарсить ее.
Но должен стоять дебаг плеер и включен режим strict.

Волгоградец
06.10.2008, 10:32
Не понял. Это же будет работать только в случае error. Т.е. в случае просто info мне никак эти данные не вытащить?

iNils
06.10.2008, 10:45
И в случаи error это тоже не будет работать. Все эти debug, info, warn, error, fatal чистой воды условности задаваемой пользователем. Например, если xml не загрузился, то выводим сообщения в режиме error, а если получаем для деления знаменатель 0, то fatal и тд.
Поэтому надо создать свой класс, куда кидать текст сообщения, потом вызывать конструкцию выше и распарсив передавать куда надо.

Волгоградец
06.10.2008, 11:53
Не, iNils, понятно, что само передаваться ничего не будет. Вопрос в том, что я смогу получить имя класса и строку только в случае если сработает какой-нибудь exeption ("например xml не загрузился или получаем для деления знаменатель 0"). А без срабатывания exeption как быть, например: есть у меня 100 классов, в каждом переменная a трейсит что-нибудь (например при вызове конструктора). Что мне передавать и соответственно что парсить, чтобы узнать какому классу принадлежит данный трейс и в какой строчке?

iNils
06.10.2008, 12:56
Что мне передавать и соответственно что парсить, чтобы узнать какому классу принадлежит данный трейс и в какой строчке?
В архиве сырой плагин для FD и класс для работы с ним.
Импортируем в свои классы класс ru.inils.utils.Debugger и пишем например:
Debugger.trace ('пример', Debugger.LEVEL_WARN);

Нужен дебаг плеер и дебаг режим компиляции.

Волгоградец
06.10.2008, 14:47
Шикарно! Работает! Только не могу понять, почему возвращается именно номер строки, откуда был вызван трейс (то что нужно), а не номер строки где был создан Error?

iNils
06.10.2008, 15:06
Потому, что getStackTrace () возвращает нам всю цепочку методов, породивших вызов трейса, в том числе и метод Debugger.traceOutput, но я то о нем знаю, поэтому в этой цепочке возращаюсь назад на нужное число шагов и получаю строку в которой был вызван Debugger.trace

Волгоградец
06.10.2008, 15:17
Все, понял. Просто про метод getStackTrace () в хэлпе кот наплакал.
iNils, ты крут. Я твой класс возьму за основу (если конечно не против) и пока просто буду в панель Output выводить.

iNils
06.10.2008, 15:20
Туда и так выводится все, но в неудобоваримом виде, а чем iTrace не подходит?

Волгоградец
06.10.2008, 15:54
У меня в output выводится только значение трейса - без указания из какого он класса и т.д.
А что, iTrace можно подключать? Я так понял, что пока он не рабочий. Я только класс проверял.

Upd.: подключил. Вот это вещь!!! Я именно это и искал. Спасибо, iNils. Всем советую.

iNils
06.10.2008, 16:07
Он рабочий, но сырой. Баги с подсветкой уровня трейса в FD3 beta9, хотя в beta8 все работает, что-то они там намутили непонятное.

Волгоградец
06.10.2008, 16:20
Насчет 9 не знаю - на работе стоит 7 бета - все работает идеально. И подсветка и переход на строку при щелчке. Приду домой на девятой бете попробую. Отличная работа!

P.S.: И еще заметил, что выходные данные дублируются в Output панель.

iNils
06.10.2008, 16:24
А в Output все все все выводится, поэтому он у меня за панелью Results, в которую ошибки выводятся, а трейсы идут в iTrace.

Волгоградец
06.10.2008, 22:45
Он рабочий, но сырой. Баги с подсветкой уровня трейса в FD3 beta9, хотя в beta8 все работает, что-то они там намутили непонятное.
Проверил. У меня работает и на девятой бете. Круто.

Kuruki
25.10.2008, 22:14
:) Что-то у меня никуда ничто не выводит... :( Ни в Output, ни в Results, ни в iTrace. Режим дебаг поставил, дебаг плеер для уверенности еще раз скачал и установил. Класс для компила указал.
Flash Ide нормально трейсы выводит (которые Debugger'ом вывожу), а с FD никак не разберусь. Что может быть?

iNils
26.10.2008, 14:47
А пример из аттача смотрели? И проект на AS3? :)

Kuruki
26.10.2008, 16:29
Вот такой код
package
{
import flash.display.Sprite;
import flash.text.TextField;
import ru.inils.utils.Debugger;
public class Main extends Sprite
{

public function Main()
{
Debugger.trace('hello, world', Debugger.LEVEL_INFO);

var field:TextField = new TextField();
field.text = 'hello, world';
addChild(field);
}

}

}
Текстовое поле создается, но трэйса нет. Может посмотрите, будет ли у вас работать этот проект?

iNils
26.10.2008, 20:16
Работает. Смотрите настройки других модулей.

Kuruki
31.10.2008, 15:18
Переустановил FDevelop с настройками. На одном компьютере трэйс заработал, на другом - нет..( На обоих установлены одинаковые java-машины, net, плеер и т.д. Видимо какая-то несовместимость c FD, помнится у меня одно время и с компиляцией на том другом компе проблема была.
А iTrace - классная вещь, спасибо!