我正在使用一些 GCD 代码来调度一堆类似的异步块。我想通过单步调试其中一个块,所以我在块顶部附近的某处设置了一个断点,但是每次提交新块时调试器都会命中断点,所以我从来没有设法单步执行块,我只是在同一行上交换不同的线程。
我的问题是如何设置断点以使其以某个线程为条件?即它应该只在线程 4 上执行时触发?
编辑
我应该补充一点,我的块的代码非常耗时,所以调度程序在块内的下一行可以执行之前切换到另一个线程,并且轮到另一个新调度的 GCD 块,触发相同的断点。
我认为这不会通过 Xcode Breakpoints UI 公开,但在 lldb 中,您可以修改断点,以便仅在 (1) 线程名称匹配、(2) 调度队列名称匹配、(3) 线程 ID 匹配或(4) 线程索引号匹配。您可以在创建断点 ( breakpoint set
) 时指定这些条件,也可以使用 将这些条件添加到现有断点breakpoint modify
。在调试器控制台窗口中查看help breakpoint modify
允许的参数列表。