Как получить имя метода вызывающей стороны? - PullRequest
1 голос
/ 15 августа 2011

Часто один и тот же метод X вызывается из других методов A, B, C. Возможно ли получить имя метода вызывающей стороны (A, B, C) из метода X внутри? Наиболее предпочтительной будет консольная команда GDB (во время отладки), но для этого достаточно будет и NSLog.

Ответы [ 4 ]

5 голосов
/ 15 августа 2011

Ввод bt внутри вызываемой функции поможет.Это печатает обратный след вызванных функций;функция, которая находится чуть ниже вызываемой функции в иерархии вызовов, является той, которая вызвала ее.

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

Обратите внимание, здесь main вызвано factorial.

1 голос
/ 15 августа 2011

Если вы находитесь в точке останова внутри метода X, вы можете использовать where для распечатывания стека, вы сможете увидеть, откуда произошел вызов X.

1 голос
/ 15 августа 2011

Вы можете использовать команду backtrace в GDB для просмотра стека вызовов.

0 голосов
/ 15 августа 2011

Введите ID NSLog, чтобы напечатать имя функции и добавить его в начале и конце метода:

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

Поскольку вы хотите использовать альтернативу gdb и без использования точек останова, вы можете попробовать описанное выше, также выможно записать номер строки, используя __LINE__.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...