我们的团队严重需要一些我们面临的以下问题的帮助,因为它阻止了我们调试dispatch_async块中的某些代码。
希望我能对下一步的工作有所帮助或建议。
我们面临的问题如下:
我们最近遇到了一个奇怪的问题,在Xcode 6中,我们无法在dispatch_async块内中断。
- (void)viewDidLoad {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
BOOL setRtn = TRUE; //<- break point is set here but never break
//call to function
BOOL setFn = some_function();
});
}
- (BOOL) some_function()
{
BOOL test = YES; <- break point set here, breakpoint break!
return test;
}
发生的事情是,当我们在dispatch_async块的任何行中设置断点时,代码将永不中断,并且断点永不起作用。
但是,如果我们在由dispatch_async块调用的函数中设置断点,则断点有效!
还有其他人面临同样的问题吗?
我们正在使用Xcode 6.1,并且正在使用IOS8.1
请提供帮助,几天来一直在疯狂地尝试解决此问题。
最佳答案
事实证明,这是由于第3方框架New Relic所致。删除对New Relic框架的引用之后,我们可以进入dispatch_async块。
因此,对于正在开发具有新的relic插件的项目的任何开发人员,您都可以临时删除对该插件的引用,并在调试ID完成后再将其添加回去。
我们花了几天时间才找到答案,我们希望此信息对每个人都有帮助。