Gewusst wie: Debuggen eine runtime-stack-Unterlauf-Fehler?

Ich bin wirklich kämpfen, um Sie zu lösen, einen stack-Unterlauf, die ich immer bin. Die traceback-ich bekomme zur Laufzeit:

VerifyError: Error #1024: Stack-Unterlauf aufgetreten ist. 

bei flash.events::EventDispatcher/dispatchEventFunction() 
bei flash.events::EventDispatcher/dispatchEvent() 
bei flash.net::URLLoader/onComplete() 

Dies ist besonders schwierig zu Debuggen, weil wenn ich im debug-Modus ausgeführt, es passiert nicht bei allen. Es geschieht nur, wenn kompiliert, wie ein release.

Hat jemand irgendwelche Tipps, wie man eine debug-Stack-Unterlauf? Eine saubere Erklärung, was das bedeutet für Flash?

Falls es hilft, dieser Fehler wird auftreten, wenn ich auf eine Schaltfläche klicken, deren handler macht einen RPC-Aufruf, der mit einem URLLoader -, ein AsyncToken, und ruft dann die Menge der AsyncResponder Instanzen im Zusammenhang mit der AsyncToken. Mit einigen server-Protokollierung sowie einige logging-gehackt in die swf-Datei, ich weiß, dass Sie die UrlLoader-erfolgreich tun und BEKOMMEN ' Ing ein crossdomain.xml Datei ist korrekt, die Verarbeitung (sprich: wenn ich Wrack es, bekomme ich eine Sicherheits-Fehler) und ist auch mit dem erfolgreichen Abschluss der "Last" anfordern (der server sendet die Daten). Der Unterlauf scheint passiert zu sein in der Veranstaltung.KOMPLETT zu hören/Bearbeitung (wie, natürlich, impliziert durch die traceback-als auch).

mxmlc verwendet = aus flex_sdk_4.5.0.20967

Beispiel player (ich habe versucht ein paar) = 10.2.153.1


UPDATE: Mein problem ist gelöst... aber ich lasse die Frage-ist da würde ich gerne wissen, wie man im Allgemeinen debug-so ein problem ist, anstatt nur immer meine spezifische Lösung.

In meinem code hatte ich die folgende Anwendung der definition:

<s:Application height="100%" width="100%"
                              xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               initialize="InitData();">

Beachten Sie, dass der code ist/war an der initialize Veranstaltung.

InitData() und der entsprechenden Definitionen sind/waren:

import classes.RpcServerProxy;
public var SP:RpcServerProxy;

public function InitData():void {
    SP = new RpcServerProxy("http://192.168.1.102:1234");
}

Wenn ich wechselte die InitData () - Aufruf auf die onCompletion Veranstaltung statt initialize (Dank J_A_X!), das problem verschwindet ganz. Was anscheinend passiert ist, war, dass die Event.KOMPLETTE event-handler (onComplete in dem stack-trace) wurde mit dem global SP-Objekt. Etwas über die release (vs debug) Zusammenstellung gewesen sein muss, Auswirkungen auf das Start-timing der SP-Initialisierung der Variablen. Verschieben der handler später die onCompletion Fall gelöst alle Probleme.

Wie gesagt, ich würde noch gerne wissen, mit welchen tricks/Werkzeuge für debugging-Initialisierung Probleme wie diese.


UPDATE 2:

applicationComplete zu sein scheint, eine noch bessere Veranstaltung als creationComplete zu setzen Initialisierung der Anwendung code. Sehen dieser blog-Eintrag für einige Erklärung, und und dieses video (um 4:25) durch einen Adobe Tech-Evangelist für ein Beispiel eines einfachen "starten der Anwendung" Daten-Initialisierung.

  • Können Sie nach dem code für die "komplette" event-handler?
  • Fujiwara: Siehe mein update oben...
  • Ich habe das gleiche problem wie du, aber auf einer anderen Stelle in meinem Programm. Die Umschaltung der Reihenfolge der Aufruf einige Funktionen das problem behoben. Das ist beängstigend.
  • Ich habe gerade das problem aufgetreten ist. Wie kommt dieses problem immer noch auftreten in 2016?! 🙁
InformationsquelleAutor Russ | 2011-06-07
Schreibe einen Kommentar