大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
在Xcode的GUI界面中只能添加软断点,而无法增加硬断点.但是在dbg窗口中我们可以使用llvm的watchpoint指令添加硬件断点,也就是所谓的数据断点.
我们可以给类的实例变量设置硬件断点,可以选择监视类型是read,write或者是read_write.
下面举一个例子:比如我们的target对象中包括一个PlayerData对象,其中一个成员变量为NSInteger型的hp和mp实例变量.我们来对mp设置读断点,对hp设置读写断点,指令如下:
watchpoint s variable -w read target->_playerData->_mp
watchpoint s variable -w read_write target->_playerData->_hp
我们可以用list命令看一下已经设置的硬件断点:
(lldb) watchpoint list
Number of supported hardware watchpoints: 4
Current watchpoints:
Watchpoint 2: addr = 0x7fca87d31ac0 size = 8 state = enabled type = rw
declare @ '/Users/apple/src/xcode_src/iOS/goodPrj/SoulOfPanda.spritebuilder/Source/BattleStage.m:209'
watchpoint spec = 'target->_playerData->_hp'
new value: 10
Watchpoint 3: addr = 0x7fca87d31ac8 size = 8 state = enabled type = r
declare @ '/Users/apple/src/xcode_src/iOS/goodPrj/SoulOfPanda.spritebuilder/Source/BattleStage.m:209'
watchpoint spec = 'target->_playerData->_mp'
new value: 15
除了显示当前存在的硬件断点之外,可以看到该命令也显示出系统支持最大的硬件断点数为4个.
如果遇到一些奇怪的和数据相关的问题,可以尝试使用数据断点来调试.硬件断点是一种强大的调试手段.