如何获取调用者方法名称?
通常,同一个方法 X 会被不同的其他方法 A、B、C 调用。是否可以从方法 X 内部获取调用者方法(A、B、C)的名称?最理想的是 GDB 控制台命令(在调试期间),但使用 NSLog 也足够了。
Frequently, the same method X gets called from different other methods A, B, C. Is it possible to get a name of the caller method (A, B, C) from inside method X? Most preferably would be GDB console command (during debug) but stuff with NSLog would also be sufficient.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在被调用函数内输入
bt
会有所帮助。这会打印被调用函数的回溯;调用层次结构中被调用函数正下方的函数是调用它的函数。请注意,这里的
main
称为factorial
。Typing
bt
while inside the called function will help. This prints the backtrace of the called functions; the function just below the called function in the call hierarchy is the one that called it.Observe, here, that
main
calledfactorial
.可以在gdb中使用命令
backtrace
来查看调用堆栈。You can use the command
backtrace
in gdb to see the call stack.如果您位于方法
X
内部的断点处,您可以使用where
打印堆栈,您将能够看到对X< 的调用位置/code> 起源。
If you're at a breakpoint inside of method
X
you can usewhere
to print out the stack, you will be able to see where the call toX
originated.Typedef NSLog 打印函数名称并将其添加到方法的开头和结尾:
由于您想要 gdb 的替代方案并且不使用断点,因此您可以尝试上述方法,也可以使用
__LINE__.
Typedef NSLog to print the function name and add it at start and end of the method:
Since you want an alternative to gdb and without using breakpoints, you can try the above, Also you can log the line number using
__LINE__
.