14

コールスタックを取得する方法はありますか?他の多くの関数から呼び出される関数があるとしましょう。しかし、誰がそれを呼び出したかを知る必要があります。

ありがとう

4

2 に答える 2

50

もちろんあります。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);

ドキュメント。

于 2012-11-10T05:32:57.367 に答える
4

を参照してくださいNSThread callStackSymbols

于 2012-11-10T05:30:52.460 に答える