2011-08-15 9 views
1

多くの場合、同じメソッドXが異なる別のメソッドA、B、Cから呼び出されます。メソッドXの内部から呼び出し元メソッド(A、B、C)の名前を取得できますか?最も好ましいのはGDBコンソールコマンド(デバッグ時)ですが、NSLogのものでも十分です。発信者メソッド名を取得する方法は?

答えて

5

btと入力すると、呼び出された関数の内部で助けになります。これは呼び出された関数のバックトレースを出力します。コール階層内の呼び出された関数のすぐ下にある関数が呼び出された関数です。

(gdb) bt 
#0 factorial (n=10) at recursive.c:13 
#1 0x0040135e in main() at recursive.c:9 

mainfactorialと呼ばれることを、ここでは、観察します。

1

コールスタックを表示するには、gdbでbacktraceというコマンドを使用できます。

1

Xのブレークポイントにいる場合は、whereを使用してスタックを印刷すると、Xへの呼び出しがどこから発生しているかを確認できます。

0

typedefののNSLog関数名を印刷し、メソッドの開始と終了時に、それを追加します。

#define CustomLogEnter(fmt, ...) NSLog((@"Function entered %s " fmt), __PRETTY_FUNCTION__, ##__VA_ARGS__); 

あなたはまた、上記の代替は、gdbをすると、ブレークポイントを使用せずに、あなたが試すことができますしたいので、あなたができます行番号は__LINE__で記録してください。

関連する問題