Debugando um aplicativo flash travando
-
20-09-2019 - |
Pergunta
Qual é a melhor maneira de depurar um aplicativo flash travando? (Sem exceção, meu aplicativo apenas falha) Estou realmente enfrentando um grande problema: meu aplicativo (site de flash completo) estava funcionando bem com o flashplayer 9, mas quebra com o flashplayer 10 ...
Aqui está o método ruim que trava meu aplicativo com FP10. Depois de remover a chamada para esse método, tudo estava funcionando corretamente com o 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();
}
Ok, eu finalmente encontrei o verdadeiro problema ... não era o método nele. Eu estava passando Nan para o argumento "A", causando um loop infinito ...
Solução
Você já tentou executá -lo com o depurador? Defina um ponto de interrupção na entrada do seu aplicativo e entre ele até que ele traga. Dessa forma, você pode ver qual linha de código é responsável e o estado das variáveis. É claro que o problema real pode ser algo que acontece antes, mas pelo menos você reduziu sua pesquisa e pode rastrear para trás.
Também outra maneira é colocar algumas instruções Trace () em seu código e ver se a seção é atingida. Então você pode dizer se está acontecendo antes ou depois e repita até encontrar a área problemática.