如何获取调用者方法名称?

时间:2011-08-15 14:47:38

标签: iphone objective-c gdb call

通常,从不同的其他方法A,B,C调用相同的方法X.是否可以从方法X中获取调用方法(A,B,C)的名称?最优选的是GDB控制台命令(在调试期间),但使用NSLog的东西也足够了。

4 个答案:

答案 0 :(得分:5)

在被调用函数内部键入bt会有所帮助。这打印了被调用函数的回溯;调用层次结构中被调用函数正下方的函数是调用它的函数。

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

在此观察main factorial

答案 1 :(得分:1)

您可以在gdb中使用命令backtrace来查看调用堆栈。

答案 2 :(得分:1)

如果您在方法X内的断点处可以使用where打印出堆栈,您将能够看到X的调用源自何处。< / p>

答案 3 :(得分:0)

Typedef NSLog打印函数名称并在方法的开头和结尾添加:

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

由于您需要替代gdb而不使用断点,您可以尝试上述操作,也可以使用__LINE__记录行号。