
FlashDevelop "дополнение" или куда подевался true? (debug)

Меня очень обворожила статья WeslomPo по поводу примочек FD (еще ему один плюс) по этому я решил было дополнить в коментах, но оказалось, что дополнений хватит на полноценный пост.
Как известно мне (по опыту), что разработка кода заключается на 2/3 из написания и на 1/3 из отладки. По этому на вооружение разработчиков поступает такая вещь как отладчик (debuger). Многие скажут — у нас есть Trace! Это тоже хорошо, но не всегда оправдано.
И значит отладчик. Отладкой я помню занимался еще на AS2. Правда, сам отладчик Flash IDE был очень не удобный, так как нельзя было посмотреть состояние в конкретной точке кода. Но сейчас это доступно!
Ладно, слова словами — но лучше один раз увидеть чем 100 раз услышать.
Для примера, напишем 2 небольших класса:
public class Main extends MovieClip
{
private var arr:Array = new Array();
public function Main()
{
for (var i:int = 0; i < 5; i++)
{
arr.push(i);
}
trace(arr.length);
for (i = 0; i < 5; i++)
{
var mc:MovieClip = new MovieClip();
addChild(mc);
arr.push(mc);
}
trace(arr.length);
for (i = 0; i < 5; i++)
{
var test:Test = new Test();
arr.push(test);
}
trace(arr.length);
}
}
И
public class Test
{
public var a:Number = 0;
public var b:Boolean = false;
public var c:String = null;
private var d:Number = 0;
public function Test()
{
a = Math.random() * 30;
if (Math.round(Math.random() * 10) % 2 == 0)
{
b = true;
}
c = Number(Math.random() * 100000).toString();
d = Math.random() * 30;
}
}
Установим класс Main как Always Compile (в случае использования Flash IDE — Docement Class) и запустим наше приложение. В результате работы, на экране в поле Output мы увидим вывод размера нашего массива в трех точках: 5,10 и 15.
Если посмотреть на сам код, то в нем мы создаем массив и в трех циклах, добавляем в него 5 значений типа int, 5 типа MovieClip и 5 наших кастомных значений типа Test.
Но у нас есть задача — отследить что происходит внутри нашего кода в конкретный момент времени. Для этого мы включаем в верхней панели редактора режим Debug и ставим в интересующей строке/строках Breakpoint, по народному просто Бряк =). Бряк ставится в левой части экрана, перед номерами строк.
Таким образом, при выполнении кода, когда выполнение программы доходит до нашего бряка — все замирает. После чего, мы смотрим наш код и путем наведения курсора мишки на определенный объект можем видеть значения всех его свойств.
По порядку:
1. Ставим бряк:

2.Нажимаем Test Movie и попадаем на наш бряк. Как видно, строка, на которой остановилось выполнение программы, подкрашивается в желтоватый цвет:

3. Наводим курсов мишки на интересующий нас объект и в выпавшем списке видим перечисление значений всех свойств:

Вот примерно так все и выглядит. Но список вкуснятин на этом не заканчивается. Если мы посмотрим на верхнюю панель редактора, то увидим там, с правой стороны, активные кнопки управлением отладчика:

Первая слева кнопка (Continue), позволяет нам игнорировать наш текущий бряк и двигаться к следующему.
Вторая (Pause), как бы позволяет сделать паузу (хотя зачем она нужна, я даже не догадываюсь).
Третья (Stop) — остановка отладки.
Четвертая (Current Line) — перебрасывает вас в строку на которой находится сработавший брейкпоинт. Используется в том случае если вы забрели в недра класса.
Пятая (Run To Cursor Line) — перебрасывает вас на следующий брейкпоинт.
Шестая (Step Into) — самая полезная, она помогает двигаться построчно. Очень выручает, когда нужно отладить определенный блок.
Седьмая (Step Over) — тоже самое что и шестая, только при движении мы не заходим внутрь методов, которые вызываются в данной строке.
Восьмая (Finish) — даже не догадываюсь =). Но работает она так же как первая и пятая.
Так же отладчик имеет свои окна.
Окно Locals — отображает все локальные переменные метода, в котором вы находитесь.
Окно Stak — показывает стек иерархии классов и позиций на которых вы находитесь.
Окно Watch — самое полезное окно. В него можно добавлять свойства/объекты из выпадающего списка свойств. Таким образом, вам не придется каждый раз находить нужное вам свойство в это списке, так как оно будет отображаться в этом окне.

Окно Breakpoints — позволяет нам управлять нашими бряками. То есть включать их и выключать.
Вот так примерно отладчик и выглядит.
Так же хотел добавить, что с помощью отладчика можно отлавливать события. Нужно только в интересующем нас месте метода-хендлера установить бряк. Так же установленный бряк в теле цикла, будет срабатывать на каждой итерации. Тем самым такой подход позволяет видить все процесы выполняющиеся на каждом шагу цикла. Это часто экономит огромную кучу времени и нервов.
Ну вот примерно и все, что можно сказать про отладчик. Так что экспериментируйте, может и вы возьмете себе этот чудный инструмент на вооружение.
Если у вас есть дополнения или вопросы — задавайте их в коментах.
- +10
- mousexaker
Комментарии (17)