我正在使用一些GCD代码来调度一堆类似的异步块。我想通过逐步调试其中一个块,所以我在块顶部附近设置了一个断点,但是每次提交一个新块时调试器都会遇到断点,所以我从来没有设法单步执行阻止,我只是在同一行上的不同线程交换。
我的问题是如何设置断点以使其以某个线程为条件?即它只应在线程4上执行时触发?
修改
我应该补充一点,我的块的代码是非常耗时的,所以调度程序在块内的下一行可以执行之前交换到另一个线程,而另一个新安排的GCD块轮到它,触发相同的断点。
答案 0 :(得分:5)
我不认为这是通过Xcode Breakpoints UI公开的,但是在lldb中你可以修改一个断点,这样只有在(1)线程名称匹配时才会触发,(2)调度队列名称匹配,(3)线程ID匹配,或(4)线程索引号匹配。您可以在创建断点(breakpoint set
)时指定这些条件,也可以将这些条件添加到具有breakpoint modify
的现有断点。请参阅调试器控制台窗口中的help breakpoint modify
以获取允许参数的列表。
答案 1 :(得分:0)
要在GDC代码中调试,可以使用 $ gdb invoke-block 。
对此有更好的想法..