使用特定队列

时间:2015-05-26 22:43:50

标签: ios xcode grand-central-dispatch lldb

我在我的项目中调试涉及大中央调度的问题。在调试时,如果在将工作分派到特定队列时获得通知,那将非常有帮助。

是否有某种方法可以在dispatch_async上设置一个符号断点,其条件可以检查调度队列参数是否与我有权访问的其他队列相同?

2 个答案:

答案 0 :(得分:1)

以下是设置条件断点的方法。 (我没有在队列上做过条件,我在这里假设指针相等就是Just Work™。)

首先获取所需队列的地址,假设它是0x12345678。然后创建一个断点:

breakpoint set -n dispatch_async -c '$register == 0x12345678'

$register替换为特定于架构的表达式。

已更新以显示Jim Ingham's comment

中的$arg1

模拟器

  • x86:*(id*)($esp+4)
  • x86-64:$arg1(又名$rdi

设备

  • armv7:$arg1(又名$r0
  • arm64:$arg1(又名$x0

答案 1 :(得分:0)

如果在队列上设置标签,则只需在正在执行的块内的字符串匹配上设置条件断点。有时候我会像这样记录它。

override def onError(request: RequestHeader, ex: Throwable) = {
  Future.successful(InternalServerError(
    views.html.errorPage(ex)
  ))
}