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

发布于 2024-11-29 19:02:38 字数 105 浏览 0 评论 0原文

通常,同一个方法 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

颜漓半夏 2024-12-06 19:02:38

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

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

请注意,这里的 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.

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

Observe, here, that main called factorial.

萌化 2024-12-06 19:02:38

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

You can use the command backtrace in gdb to see the call stack.

梨涡少年 2024-12-06 19:02:38

如果您位于方法 X 内部的断点处,您可以使用 where 打印堆栈,您将能够看到对 X< 的调用位置/code> 起源。

If you're at a breakpoint inside of method X you can use where to print out the stack, you will be able to see where the call to X originated.

ヤ经典坏疍 2024-12-06 19:02:38

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

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

由于您想要 gdb 的替代方案并且不使用断点,因此您可以尝试上述方法,也可以使用 __LINE__.

Typedef NSLog to print the function name and add it at start and end of the method:

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

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__.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文