我们的团队严重需要一些我们面临的以下问题的帮助,因为它阻止了我们调试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完成后再将其添加回去。

我们花了几天时间才找到答案,我们希望此信息对每个人都有帮助。

09-07 13:52