2011-08-15 147 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 

觀察,這裏,是main稱爲factorial

1

您可以使用gdb中的命令backtrace來查看調用堆棧。

1

如果您處於方法X內部的斷點處,則可以使用where打印堆棧,您將能夠看到發起X的呼叫的起始位置。

0

的typedef的NSLog打印的功能名稱,並在方法的開始和結束添加:

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

既然你想要一個替代入庫和不使用斷點,你可以試試上面的,你也可以使用__LINE__記錄行號。