如何每隔10次设置LLDB断点?

时间:2016-11-15 16:41:35

标签: xcode breakpoints lldb

要调试高频定时器或传感器的值,配置仅每x次触发的断点将非常有用。最好的方法是什么?

我尝试了#34;在停止之前忽略了x次" Xcode中的选项,但这仅适用于第一次。我可以使用LLDB命令重置此计数器吗?

2 个答案:

答案 0 :(得分:2)

您可以随时使用以下方法重置忽略计数器:

au run

注意,断点不满足其"忽略计数"不被认为是被击中,因此它的断点命令不会被运行。因此,如果您想在自动命中断点时每隔十分钟停一次,请执行以下操作:

(lldb) break modify -i <NEW_VALUE> <BKPT_SPECIFICATION>

然后点击&#34;继续&#34;在每个站点,你每10次点击一次断点。

注意,我使用了命名断点( (lldb) break set -l 10 -i 10 -N my_bkpt Breakpoint 1: where = foo`main + 46 at foo.c:10, address = 0x0000000100000f5e (lldb) break com add Enter your debugger command(s). Type 'DONE' to end. > break modify -i 10 my_bkpt > DONE (lldb) 选项)的能力,所以我不必知道我添加的断点命令中的断点号。如果您要将这些断​​点存储在命令文件等中,那将非常方便。

参考:Managing breakpoints上的Apple文档。您还可以执行-N命令以获取可用选项的完整列表

答案 1 :(得分:0)

我不确定您是否可以在lldb中定义持久变量(计数器)。您可以始终拥有一个用作计数器帮助程序的全局变量,并且不会将其包含在发布版本中。

class BrCounter{
     static var freq = 10
} 

编辑断点并添加以下条件:

BrCounter.freq--; 
if(BrCounter.freq == 0){ 
    BrCounter.freq = 10; 
    return true; 
}else{ 
    return false; 
}

Oneliner:

BrCounter.freq--; if(BrCounter.freq == 0){ BrCounter.freq = 10; return true; }else{ return false; }