2

サードパーティの 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 スタック フレームが欠落していると思われます。
  • コードの一部を無効にする盲目的なバイナリ検索タイプのアプローチ - これは遅いですが、おそらくうまくいくでしょう。

私が試すべき他の戦略はありますか?

4

1 に答える 1

2

これは同じ問題のように聞こえますか? これをさらにデバッグする方法についての直接的な回答ではなく、同様の問題を抱えて解決策を見つけた人へのポインタであるため、申し訳ありません。

于 2009-03-06T05:13:29.797 に答える