Xcode中使用数据(硬件)断点调试

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! 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个.

如果遇到一些奇怪的和数据相关的问题,可以尝试使用数据断点来调试.硬件断点是一种强大的调试手段.

时间: 2024-08-03 17:06:43

Xcode中使用数据(硬件)断点调试的相关文章

Xcode中的全局异常断点

一旦异常断点被添加,你可以鼠标右键选择 Edit Breakpoint 打开弹出菜单. 改变异常类型为Objective-C,这可以防止C++异常被捕获,你可能不想捕获这些. 因为通常情况下你的App中没有C++代码,而在OpenAL框架库和其他第三方代码可能会引发C++异常,但你不必处理这些.

[译] Xcode 中的用户断点

本文讲的是[译] Xcode 中的用户断点, 原文地址:User Breakpoints in Xcode 原文作者:Michael Ochs 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:oOatuo 校对者:fengzhihao123, LeviDing Xcode 中的用户断点 大家应该都用过 Xcode 中的断点,但你们熟悉用户断点么?下面我将向你们介绍如何使用以及何时使用这种断点.如果你已经对用户断点有所了解了,可以查看下文章后面的清单,看

sqlite-如何将导入到数据库表中的数据保存在程序中,而不用每次换调试机时还得重新导入数据

问题描述 如何将导入到数据库表中的数据保存在程序中,而不用每次换调试机时还得重新导入数据 如题:我有一张excel的表,我将其存为.csv文件,然后通过dos命令下的sqlite3命令导入到了数据库表中,问题是如果不换机子,导入到该数据库表中的数据永久有效.如果我换机子调试的话,该数据库表中的数据就不存在了,会报错,请问有没有解决办法?谢谢! 解决方案 最好存入远程数据库每次启动同步下来数据就可以了,sqlite是系统自带的数据库具体的就是http://blog.csdn.net/tianyit

JS断点调试心得

1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断点?(我们先看一个断点截图,以chrome浏览器的断点为例) 步骤记住没? 用chrome浏览器打开页面 → 按f12打开开发者工具 → 打开Sources → 打开你要调试的js代码文件 → 在行号上单击一下,OK!恭喜你的处女断点打上了,哈哈~~ 2.断点怎么打才合适? 打断点操作很简单,核心的

在 UWP 应用中创建、使用、调试 App Service (应用服务)

原文:在 UWP 应用中创建.使用.调试 App Service (应用服务) 在 Windows 10 中微软为 UWP 引入了 App Service (即应用服务)这一新特性用以提供应用间交互功能.提供 App Service 的应用能够接收来自其它应用传入的参数进行处理后返回数据. 创建应用服务 要使应用支持提供 App Service 非常简单.只需正确配置应用的清单文件后添加服务相关的代码即可. 配置应用清单文件 打开项目中的 Package.appxmanifest 文件. 切换到

IOS Xcode中快捷键大全_IOS

在Xcode 中有许多快捷键的设定可以使得你的编程工作更为高效,对于在代码文件中快速导航.定位Bug以及新增应用特性都是极有效的. 当然,你戳进这篇文章的目的也在于想要快速的对代码文件进行操作,或者是让Xcode的各面板更为适应你小本子的屏幕. 在Xcode 所有快捷键中下列这些是首当其冲应当学习的.在你学习到如何使用之后,也许就再也离不开它们了. Xcode中的常用快捷键 新建项目     com + shift +N 新建文件    com  + N 偏好设置  通用   com + , 跳

javascript断点调试心得分享_javascript技巧

1.断点调试是啥?难不难? 断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了.操作起来似乎很简单,其实很多人纠结的是,是在哪里打断点?(我们先看一个断点截图,以chrome浏览器的断点为例) 步骤记住没? 用chrome浏览器打开页面 → 按f12打开开发者工具 → 打开Sources → 打开你要调试的js代码文件 → 在行号上单击一下,OK!恭喜你的处女断点打上了,哈哈~~ 2.断点怎么打才合适? 打断点操作很简单,核心的

在ASP.NET 2.0中操作数据之五十七:在分层架构中缓存数据_自学过程

导言: 正如前面章节所言,缓存ObjectDataSource的数据只需要简单的设置一些属性.然而,它是在表现层对数据缓存,这就与ASP.NET page页面缓存策略(caching policies)紧密的耦合(tightly couples)起来.我们对体系机构分层的原因之一便是打破这种耦合.拿业务逻辑层为例,将业务逻辑从ASP.NET页面脱离出来:而数据访问层将数据访问的细节ASP.NET页面脱离出来.从某种意义来说,将业务逻辑和数据访问细节脱离出来是首先,这样的话使系统更易读.易维护.易

我想将职员的打分表中的数据进行处理,具体就是将每个人对别人的打分进行分析,如果不合格,就将本人的得分减去5,然后把这个人的所得平均分写回打分汇总表怎样实现!

问题描述 我想将职员的打分表中的数据进行处理,具体就是将每个人对别人的打分进行分析,如果不合格,就将本人的得分减去5,然后把这个人的所得平均分写回打分汇总表怎样实现! 解决方案 解决方案二:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.Configuratio