gar*_*pet 5 breakpoints ios dispatch-async xcode6 ios8
我们的团队非常需要帮助解决我们面临的以下问题,因为它阻止我们调试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;
}
Run Code Online (Sandbox Code Playgroud)
当我们在dispatch_async块的任何行内设置断点时,代码永远不会中断,断点永远不会起作用.
但是,如果我们在dispatch_async块调用的函数中设置断点,则断点有效!
还有其他人面临同样的问题吗?
我们正在使用Xcode 6.1并正在开发IOS8.1
请帮助,一直疯狂试图解决这个问题好几天.
gar*_*pet 11
事实证明,这是因为第三方框架New Relic.删除对New Relic框架的引用后,我们可以进入dispatch_async块.
因此,对于任何处理具有新relic插件的项目的开发人员,您可以临时删除对插件的引用,并在稍后调试ID完成时将其添加回来.
我们花了几天时间才发现,我们希望这条信息对每个人都有帮助.
小智 11
事实证明,Grand Central Dispatch工具确实可以防止dispatch_async块中的断点.您可以通过在prefix.pch文件中添加以下内容来禁用环境中的GCD宏:
#ifdef DEBUG
#undef dispatch_async
#undef dispatch_sync
#undef dispatch_after
#undef dispatch_apply
#undef _dispatch_once
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2231 次 |
| 最近记录: |