还有其他办法在Objective-C 中获取当前线程的栈帧总数
时间: 2024-03-15 15:47:45 浏览: 130
获取正在执行的线程
除了使用 Mach 线程 API 获取当前线程的栈帧总数外,还有其他方法可以实现。其中比较常用的是使用 backtrace 函数和 backtrace_symbols 函数来获取栈帧信息。
```objc
#include <execinfo.h>
NSUInteger getStackFrameCount() {
void *callstack[128];
int frames = backtrace(callstack, 128);
char **strs = backtrace_symbols(callstack, frames);
if (strs == NULL) {
return 0;
}
NSUInteger count = frames;
free(strs);
return count;
}
```
这个方法会返回当前线程的栈帧总数,如果返回值为 0,则表示获取失败。需要注意的是,这个方法获取到的栈帧信息可能不够精确,有一定的误差。
阅读全文