ios中backtrace获取不到某些代码崩溃的函数堆栈

TaoismShi 2015-06-10 08:53:37
rt,我在做一个ios崩溃收集的demo,具体是建了一个crash按钮,然后在按钮的响应函数(begincrash)里写了崩溃的代码,现在是这样的
- (IBAction)beginCrash:(id)sender {

int *pi = (int*)0x00001111;
*pi = 17;

}


然后捕获到信号后获取堆栈,获取堆栈的代码是这样的
+(NSArray *)getBacktrace
{
void* callstack[128];
int frames = backtrace(callstack, 128);
char **strs = backtrace_symbols(callstack, frames);

int i;
NSMutableArray *backtrace = [NSMutableArray arrayWithCapacity:frames];
for (i=0;i<frames;i++)
{
[backtrace addObject:[NSString stringWithUTF8String:strs[i]]];
}
free(strs);
return backtrace;
}


最后得到的堆栈是这样的,注意没有崩溃函数(begincrash)


换了其他的代码比如重复释放等就能获取到堆栈,就这段代码造的崩溃获取不到堆栈,求解答。。
...全文
702 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dqw18037 2015-10-27
  • 打赏
  • 举报
回复
我也遇到了同样的问题,请问你找到原因了么
不担心 2015-06-11
  • 打赏
  • 举报
回复
不明觉厉,佩服

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧