Отладка вышедшего из строя Flash-приложения
-
20-09-2019 - |
Вопрос
Каков наилучший способ отладки ВЫШЕДШЕГО из СТРОЯ flash - приложения?(без исключения, мое приложение просто вылетает) На самом деле я столкнулся с большой проблемой:мое приложение (веб-сайт с полной поддержкой flash) отлично работало с flashplayer 9, но сбой произошел с flashplayer 10...
Вот ПЛОХОЙ метод, который приводит к сбою моего приложения с помощью FP10.После удаления вызова этого метода все работало должным образом с FP10.
public static function drawWedgeCrown(g : Graphics,a : Number,r : Number,r2 : Number, n : Number, c : Number, t : Number) : void {
var x : Number ;
var y : Number;
g.beginFill(c, t);
g.moveTo(r, 0);
g.lineTo(r, 0);
var teta : Number = 0;
var dteta : Number = 2 * Math.PI / n;
while(teta < a) {
x = r * Math.cos(teta);
y = -r * Math.sin(teta);
g.lineTo(x, y);
teta += dteta;
}
x = r * Math.cos(a);
y = -r * Math.sin(a);
g.lineTo(x, y);
x = r2 * Math.cos(a);
y = -r2 * Math.sin(a);
g.lineTo(x, y);
teta = a;
dteta = 2 * Math.PI / n;
var cpt : int = 0;
while(teta > 0) {
cpt++;
x = r2 * Math.cos(teta);
y = -r2 * Math.sin(teta);
g.lineTo(x, y);
teta -= dteta;
}
x = r2 * Math.cos(0);
y = -r2 * Math.sin(0);
g.lineTo(x, y);
g.lineTo(r, 0);
g.endFill();
}
Итак, я, наконец, нашел настоящую ПРОБЛЕМУ...это был не метод сам по себе.Я передавал NaN для аргумента "A", вызывающего бесконечный цикл...
Решение
Вы пробовали запускать его с помощью отладчика?Установите точку останова при входе в ваше приложение, а затем выполняйте ее до тех пор, пока она не выйдет из строя.Таким образом, вы можете увидеть, какая строка кода отвечает за это, и состояние переменных.Конечно, реальная проблема может заключаться в чем-то, что произошло раньше, но, по крайней мере, вы сузили круг поиска и можете отследить его в обратном направлении.
Также другой способ - поместить некоторые инструкции trace() в ваш код и посмотреть, попадет ли когда-нибудь в раздел.Затем вы можете определить, происходит ли это до или после, и повторять до тех пор, пока не найдете проблемную область.