有没有办法获得调用堆栈?假设我有一个被许多其他函数调用的函数,但我需要知道是谁调用它。
由于
答案 0 :(得分:48)
当然有。如果你可以使用Cocoa框架:
NSLog(@"%@", [NSThread callStackSymbols]);
如果你不能使用它:
#include <execinfo.h>
int size = 256;
void *stack[size];
size = backtrace(stack, size);
char **syms = backtrace_symbols(stack, size);
for (int i = 0; i < size; i++) {
printf("Frame #%d: %s\n", i, syms[i]);
}
free(syms);
答案 1 :(得分:5)
请参阅NSThread callStackSymbols
。