サードパーティの SWF によってロードされている SWF があります。ソース コードがあり、swf を再コンパイルしていますが、サード パーティの swf のコードがありません。
おそらく私のコードのどこかに、スタック オーバーフローがあります。デバッグ フラッシュ プレーヤーで、オーバーフローが発生すると、スタック トレースを含む素敵なポップアップ ダイアログが表示されます。
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()
このように64行続きます。ただし、スタック トレース全体ではなく、最後の 64 スタック フレームのみが表示されているようです。
完全なスタック トレースを表示する方法はありますか? 別の方法として、スタックの深さを制限する方法はありますか?
これをデバッグするのに 1 日を費やしましたが、ほとんど情報がなく、ツールも不足しています。これが私が試したことです:
- コードをデバッガーに接続します。これは、VM 内の Windows で実行されている Flash 9.0.28 で、VM の外部で実行されているフレックス ビルダーに接続しています。接続しているように見えますが、トレース ステートメントが取得されず、ブレークポイントが起動しません。
- ログ行を http サーバーに送信します。これは機能しますが、オーバーフロー/サーバーがクラッシュする前の最後の n スタック フレームが欠落していると思われます。
- コードの一部を無効にする盲目的なバイナリ検索タイプのアプローチ - これは遅いですが、おそらくうまくいくでしょう。
私が試すべき他の戦略はありますか?