2011-08-15 108 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__记录行号。