iOS 常用调试方法:断点

栏目: IOS · 发布时间: 5年前

内容简介:级别: ★☆☆☆☆标签:「Xcode断点调试」「iOS breakpoint」「iOS全局断点」作者: Xs·H

级别: ★☆☆☆☆

标签:「Xcode断点调试」「iOS breakpoint」「iOS全局断点」

作者: Xs·H

审校:QiShare团队

在iOS项目开发过程中,常用到静态分析(Analyze)、断点(Breakpoint)和控制台(Console)进行代码调试。本篇文章介绍Xcode常用调试方法之“断点调试”。

一、简介

Xcode的断点功能是iOS开发者的常用功能。在代码编辑区内的左边栏上点击一下即可创建一个断点,当程序每次运行到断点,就会暂停下来,方便开发者调试。如下图:

iOS 常用调试方法:断点

同时,开发者可以使用上图中用数字标记的 工具 辅助断点调试。各工具的作用如下:

  1. 启用/禁用断点(点击后变灰色,所有断点失效;再点击变蓝色,所有断点生效)
  2. 继续执行程序(点击后跳过本次断点,继续执行程序)
  3. 执行下一步(点击后执行第37行代码)
  4. 进入方法(点击后进入-afunction方法)
  5. 跳出方法(在-afunction方法内部点击后回到第36行代码)

除了断点的基础用法,开发者还可以使用断点的进阶功能: 编辑断点异常断点 和**符号断点。

二、编辑断点

双击断点或者右键点击断点,选择Edit Breakpoint即可打开断点编辑页面。页面中包含Condition、Ignore、Action和Options四个部分,接下来逐一介绍。

1. Condition

Condition 为条件。开发者可以在Condition输入框中设置触发断点的条件。比如,在一个for循环中,可以设置在满足 i==5 时才触发断点。如下图。

iOS 常用调试方法:断点

2. Ignore

Ignore 为忽略次数。开发者可以在Igore输入框中设置忽略此断点的次数。比如,设置Ignore为5,则在第6次执行到断点行时才会触发断点。

3. Action

Action 为触发动作。Action可以添加多条,在触发断点后,会紧接着执行设定的Actions。Action有6种执行类型,其中较常用的有 Debugger CommandLog message ,如下图。

iOS 常用调试方法:断点

1) Debugger Command

Debugger Command 允许开发者设定一些 LLDB命令 ,从而实现打印对象、修改变量等功能。如下图。

iOS 常用调试方法:断点

2) Log Message

Log Message 为提供了标准的文本输出格式。开发者可以按照格式设定在触发断点后输出的内容。其中, @exp@ 表示输出exp的内容, %B 表示输出断点的名称, %H 表示输出断点执行的次数。如下图。

iOS 常用调试方法:断点

4. Options

Options控制在执行断点对应的Actions后是否自动继续执行程序。勾选后Options后,断点被触发后不进入Debug界面。

三、异常断点(全局断点)

开发者可以在Xcode中很方便地创建一个异常断点。如下图:

iOS 常用调试方法:断点

当创建异常断点后,会显示一个名为 All Exceptions 的断点,所以也常称作全局断点。当程序抛出异常时会触发异常断点,并且大部分常见错误会被断点定位到对应的代码行,很方便调试。比如:设置全局断点后,我们写一段数组越界的代码,当运行到此代码时,就会断点到越界的那一行。如下图:

iOS 常用调试方法:断点

而当去掉全局断点后再次运行程序触发越界代码后会崩溃断点到main.m中,而不会定位到越界那一行。如下图:

iOS 常用调试方法:断点

四、符号断点

符号断点(Symbolic Breakpoint)是全局断点,可以针对某一个方法(函数)设置断点。开发者可以很方便地创建一个符号断点,如下图:

iOS 常用调试方法:断点

与普通断点相比,符号断点的编辑界面多出来 SymbolModule 两个输入框。

1. Symbol

开发者可以在Symbol输入框中设置断点出发方法/函数。如下图,在Symbol中设置一个方法/函数后,运行程序并执行到此方法时会触发断点。

iOS 常用调试方法:断点
iOS 常用调试方法:断点

这里要注意Symbol中方法/函数的写法: 方法(OC方法):用 + 指明是类方法,用 - 指明是实例方法,参数声明不可省略, : 后不能有空格; 函数:(C函数):直接写函数名即可。

2. Module

开发者可以在Module输入框中设置Symbol中的函数所在的库,以避免不同库中存在名字相同的方法/函数,默认不用填写。

3. Condition等功能

符号断点编辑页面除 SymbolModule 外的 Condition 等功能用法与普通断点一致。比如,在Condition输入框中设置 $arg3==nil && $arg4==nil ,就会限制断点在满足第一个参数和第二个参数都为nil时才会被触发。如下图:

iOS 常用调试方法:断点

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web应用漏洞侦测与防御

Web应用漏洞侦测与防御

Mike Shema / 齐宁、庞建民、张铮、单征 / 机械工业出版社 / 2014-8-20 / 69.00

本书由国际知名网络安全专家亲笔撰写,全面讲解如何预防常见的网络攻击,包括HTML注入及跨站脚本攻击、跨站请求伪造攻击、SQL注入攻击及数据存储操纵、攻破身份认证模式、利用设计缺陷、利用平台弱点、攻击浏览器和隐私等, 全书共8章:第1章介绍HTML5的新增特性及使用和滥用HTML5的安全考虑;第2章展示了如何只通过浏览器和最基本的HTML知识就可以利用Web中最常见的漏洞;第3章详细讲解CSR......一起来看看 《Web应用漏洞侦测与防御》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试