要调试高频计时器或传感器的值,最好配置一个断点,该断点每隔x次才触发一次。做这件事最好的方法是什么?
我在Xcode中尝试了“在停止之前忽略x次”选项,但这只是第一次起作用。我可以使用LLDB命令重置此计数器吗?
发布于 2016-11-16 17:20:21
您可以在任何时候重置“忽略计数器”:
(lldb) break modify -i <NEW_VALUE> <BKPT_SPECIFICATION>
注意,不满足其“忽略计数”的断点不被视为命中,因此它的断点命令不会运行。因此,如果您希望每隔十分之一次自动地到达断点,只需执行以下操作:
(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)
然后只要在每一站点击“继续”,你就会每10次点击断点一次。
注意,我使用了命名断点的能力( -N
选项),因此我不必知道我添加的断点命令中的断点号。如果要将这些断点存储在命令文件中,这很方便,等等。
参考文献:苹果在管理断点上的文档。您还可以执行help breakpoint set
命令,以获得可用选项的完整列表。
发布于 2016-11-15 09:24:28
我不确定您能否在lldb中定义持久变量(计数器)。您始终可以有一个全局变量,您可以使用它作为计数器助手,而只是在发行版构建中不包含它。
class BrCounter{
static var freq = 10
}
编辑断点并添加以下条件:
BrCounter.freq--;
if(BrCounter.freq == 0){
BrCounter.freq = 10;
return true;
}else{
return false;
}
龙舌兰人:
BrCounter.freq--; if(BrCounter.freq == 0){ BrCounter.freq = 10; return true; }else{ return false; }
https://stackoverflow.com/questions/40615222
复制