使用特定队列调用dispatch_async时的符号断点

2024-01-20

我正在调试项目中涉及中央调度的问题。在调试过程中,如果有一种在工作被分派到特定队列时收到通知的方法,将会非常有帮助。

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


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

首先获取你想要的队列的地址,假设它是0x12345678。然后创建断点:

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

Replace $register具有特定于架构的表达方式。

已更新以显示$arg1 from 吉姆·英厄姆的评论 https://stackoverflow.com/questions/30470217/symbolic-breakpoint-for-when-dispatch-async-is-called-with-a-specific-queue/30497387#comment49150550_30497387

模拟器

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

Device

  • armv7: $arg1 (aka $r0)
  • arm64: $arg1 (aka $x0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用特定队列调用dispatch_async时的符号断点 的相关文章

随机推荐