2009-03-06 8 views
2

Ich habe eine SWF, die von einem Dritten swf geladen wird. Ich habe Quellcode und rekompiliere meine swf, aber habe keinen Code an die swf der dritten Partei.Debugging eines Flash-Stack-Überlaufs

Irgendwo, wahrscheinlich in meinem Code, gibt es einen Stapelüberlauf. In einem Debug Flash Player, erhalte ich einen schönen Popup-Dialog mit einem Stack-Trace, wenn der Überlauf auftritt:

Error: Error #1023: Stack overflow occurred. 
    at Object$/Object::_hasOwnProperty() 
    at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty() 
    at Object$/Object::_hasOwnProperty() 
    at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty() 
    at Object$/Object::_hasOwnProperty() 

Es geht so auf 64 Linien. Es sieht jedoch so aus, als würde ich nur die letzten 64 Stack-Frames sehen, nicht den gesamten Stack-Trace.

Gibt es eine Möglichkeit, den vollständigen Stack-Trace zu sehen? Gibt es eine Möglichkeit, die Stapeltiefe zu begrenzen?

Ich habe einen ganzen Tag versucht, dies zu debuggen, aber bin auf sehr wenig Informationen und einem Mangel an Tools ausgeführt. Hier ist, was ich versucht habe:

  • Hooking mein Code bis zu einem Debugger. Dies geschieht in Flash 9.0.28, das in Windows in einer VM ausgeführt wird und eine Verbindung zum Flex Builder herstellt, der außerhalb der VM ausgeführt wird. Es scheint sich zu verbinden, aber ich bekomme keine Trace-Anweisungen, und Breakpoints feuern nicht.
  • Senden von Protokollzeilen an einen HTTP-Server. Das funktioniert, aber ich vermute, dass mir die letzten n Stack-Frames vor dem Überlauf/Server-Absturz fehlen.
  • Eine blinde, binäre Suche Typ Ansatz Deaktivieren von Teilen des Codes - das ist langsam, aber wahrscheinlich wird funktionieren.

Alle anderen Strategien, die ich versuchen sollte?

+0

Neuere Versionen des Debuggers von Flex Builder sind nicht mehr vollständig kompatibel mit Flash Player 9.0.28. Ich glaube, du brauchst 9.0.115 oder höher. – joshtynjala

Antwort

2

Hört this klingt das gleiche Problem? Entschuldigung, da es nicht direkt eine Antwort darauf ist, wie Sie das weiter debuggen könnten, sondern eher ein Zeiger auf jemanden, der ein ähnliches Problem hatte und eine Lösung gefunden hat.

+0

Das wurde unser Problem, danke! Was für ein gnarly Bug ... –

+2

Die Seite, die Sie verlinken, ist eine Registrierungswand versteckt. Sind die gleichen Informationen woanders verfügbar? Da der Registrierungsserver im Moment nicht erreichbar ist und ich wie die meisten Entwickler versuche, meinen Fehler sofort zu beheben! – ADB