仅在Xcode/LLDB中为特定线程设置条件断点

仅在Xcode/LLDB中为特定线程设置条件断点,xcode,llvm,lldb,Xcode,Llvm,Lldb,我正在使用一些GCD代码,它分派一组类似的异步块。我想通过单步执行来调试这些块中的一个,因此我在块顶部附近的某个位置设置了一个断点,但是每次提交新块时,调试器都会命中断点,因此我从未尝试单步执行该块,我只是在同一行上的不同线程之间进行交换 我的问题是如何设置断点,使其以某个线程为条件?i、 只有在线程4上执行时才会触发 编辑 我应该补充一点,我的块的代码非常耗时,因此调度程序在执行块内的下一行之前切换到另一个线程,而另一个新调度的GCD块又轮到它,触发相同的断点。要在GDC代码中调试,可以使用$

我正在使用一些GCD代码,它分派一组类似的异步块。我想通过单步执行来调试这些块中的一个,因此我在块顶部附近的某个位置设置了一个断点,但是每次提交新块时,调试器都会命中断点,因此我从未尝试单步执行该块,我只是在同一行上的不同线程之间进行交换

我的问题是如何设置断点,使其以某个线程为条件?i、 只有在线程4上执行时才会触发

编辑


我应该补充一点,我的块的代码非常耗时,因此调度程序在执行块内的下一行之前切换到另一个线程,而另一个新调度的GCD块又轮到它,触发相同的断点。

要在GDC代码中调试,可以使用$gdb invoke block

对同样的事情有更好的想法


  • 而且已经在那里指导了

    我认为这不会通过Xcode断点UI公开,但在lldb中,您可以修改断点,使其仅在(1)线程名称匹配、(2)调度队列名称匹配、(3)线程ID匹配或(4)线程索引号匹配时触发。您可以在创建断点(
    断点集
    )时指定这些条件,也可以使用
    断点修改
    将这些条件添加到现有断点。有关允许的参数列表,请参见调试器控制台窗口中的帮助断点修改