2009-07-29 18 views
0

私は別の関数(FunctionB)によって呼び出されている関数(FunctionA)を持っています。問題は、どの機能 "FunctionB"がわからないかということです。ActionScript 2でどのような関数が別の関数と呼ばれるのかを調べるにはどうすればよいですか?

私はこのコードのスニペット持っている:私は「???」のために置くために何を把握する必要があり

function FunctionA():void { 
    trace("This function was called by " + ???); 
} 

をFunctionAのtraceステートメントは次のようになります。

This function was called by FunctionB

「???」には何を入力しますか?

答えて

1

考えているアイデアは、現在のスタックトレースを見ています。現在実行中のメソッドの前のエントリは、FunctionAに呼び出されたルーチンでなければなりません。

Example

(これは、ActionScript 3.0のですが、私はそれは、以前のバージョンで利用可能であるべきであるかなり確信している)

+0

"getStackTrace 'という名前のメソッドはありません。 AS3専用だと思います。 –

0

私は、スタックトレースは、AS2で利用可能ではないと思います。

それぞれの可能な呼び出しサイトについては

、somestrがユニークであるライン

arguments.callee.__caller="somestr"; 

を追加します。

機能に対応して

trace(arguments.caller.__caller); 

はコメントする:

私は理論的には、あなたが再帰関数を探して、それらをタグ付け_globalオブジェクトを歩くことができると思います。

私はあなたがFlash IDEを使用していないと仮定していますか?これはデバッガ(かなり遅いと悪い)がありますが、スタックトレースが必要です(メモリが私のものであれば)

+0

このテクニックの唯一の問題は、私にこのソフトウェアが与えられていることです。私はこのソフトウェアを何と呼んでいるのかも分かりません。 関数が呼び出されるたびにルートムービーをトレースしてトレースする方法はありますか? –

関連する問題