【问题标题】:How to get a caller method name?如何获取调用者方法名称?
【发布时间】:2011-10-27 08:06:02
【问题描述】:

经常,同一个方法 X 会从不同的其他方法 A、B、C 中调用。是否可以从方法 X 内部获取调用方方法的名称(A、B、C)?最好是 GDB 控制台命令(在调试期间),但带有 NSLog 的东西也足够了。

【问题讨论】:

    标签: iphone objective-c gdb call


    【解决方案1】:

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

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

    请注意,main 称为 factorial

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          Typedef NSLog 打印函数名并将其添加到方法的开头和结尾:

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

          由于您想要替代 gdb 并且不使用断点,您可以尝试上述方法,也可以使用 __LINE__ 记录行号。

          【讨论】:

            猜你喜欢
            • 2017-04-19
            • 1970-01-01
            • 2013-07-07
            • 1970-01-01
            • 2011-07-03
            • 2019-01-21
            • 2021-04-16
            • 2014-07-11
            相关资源
            最近更新 更多