通常,从不同的其他方法A,B,C调用相同的方法X.是否可以从方法X中获取调用方法(A,B,C)的名称?最优选的是GDB控制台命令(在调试期间),但使用NSLog的东西也足够了。
答案 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__
记录行号。