Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)

前端之家收集整理的这篇文章主要介绍了Swift 代码调试-善用XCode工具(UI调试,五种断点,预览UIImage...)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原创Blog,转载请注明出处
http://blog.csdn.net/hello_hwc?viewmode=list
我的stackoverflow


工欲善其事,必先利其器,强烈建议新手同学好好研究下XCode这个工具。比如Build Settings,Build Info Rules,Build Parse,Edit Scheme…


前言:这个Swift调试系列分为四篇

  1. 图形化界面调试
  2. LLDB常用命令
  3. LLDB进阶使用
  4. Zombie等其他调试

2015.12月和2016.1月主要更新iOS开发的设计模式和Instruments优化技巧,穿插着写一些别的。


断点

断点是调试中经常用到的,让代码停止在错误出现的地方,看看变量以及上下文实际的变化,往往就能够找到问题所在。

点击左侧部分就可以添加断点,再单机可以禁用单个断点

导航栏中的断点列表

可以右键来禁用,编辑,删除断点。


断点上下文


让我们来看看图中的四个区域

  1. 这里可以看到cpu,内存,磁盘以及网络情况。注意,只有在实际设备上才是有意义的
  2. 线程信息,可以看到当前停在main Queue上,app运行的时候也启动了其他几个队列。注意,调试的时候看看代码运行的线程是否正确很有必要
  3. 这里可以看到Local变量,Swift有个好处是按照Module来划分了变量,简单粗暴
  4. 这个区域是LLDB调试区域,可以用LLDB命令执行任何动态的代码

我们着重来看下3,4区域,新手往往只会看变量,其实这里有很多可以利用的信息

其中
A. 禁用,启用所有断点
B. 继续执行
C. 跳过这一行
D. step in(例如进入到函数实现内部)
E. step out (退出step in)
F. 打开UI调试 (后问会详细阐述)
G.模拟位置
H.选择线程
I. 查看线程调用堆栈
其中I的截图如下


@H_404_76@条件断点

举个例子,我想停在第888次执行?总不能一次次的continue吧!

for var index = 0;index < 1000;index++ {
            print(index)
  }

右键断点,选择edit breakpoint

然后填写条件

condition就是代码触发的条件
ignore就是在断点触发前忽略几次
action是断点触发后,执行的LLDB动作,这里很简单就是打印当前的sum
options,执行完action后是否继续执行

可以看到运行的截图


准备工作

接下来讲的几种断点添加方式都是,在断点导航底部,如图添加


Swift Error 断点

这个在Swift开发中很常用

添加一个Swift Error断点

定义一个方法,来抛出Swift Error

func test() throws{
        throw DemoError.Type1
    }
    enum DemoError: ErrorType {
        case Type1
        case TYpe2
    }

然后,这样调用

do{
    try test()
}catch{

}

会发现,在Swift Error发生的时候,断点触发

当然,Swift Error断点也支持编辑来捕获指定类型的Error

为了方便读者阅读,图片我没加水印,转发者请注明转自 Leo的CSDN博客http://blog.csdn.net/hello_hwc?viewmode=list


Exception断点

在抛出异常的时候触发
这个在iOS开发中很常用
有过iOS开发的都知道,Cocoa在错误的时候会抛出异常,而实用这个断点,会帮助我们捕获异常。
例如
随便performSelector,会抛出异常

self.performSelector("abcdefg")

添加了All Exception后,会停在这里


Symbol断点

停在不方便直接加断点的地方
例如,停在

-[NSObject setValue:forUndefinedKey:]

如图

然后,这样调用

self.setValue("Dta",forUndefinedKey: "dagd")

会发现断点触发


Test Failure断点

这个就是使用XCTest框架来测试的时候,当Test Case的Assert失败的时候触发的断点。这里不截图了


变量图片预览

红圈中左边是预览,右边是打印Description


UI调试

如何打开UI调试

图中的红圈部分,点击后,整个调试区域如图

其中

  1. 用来查看View的层次结构,树状图
  2. View的可视区域,可以详细的看到View的叠加关系
  3. 选中某一个View后的属性

查看AutoLayout约束
右键某一个View

然后选择Show Constraints,

注意,第一张图右上角的地址

0x7f8169e7daa0

这里先记着,这个地址对LLDB的调试很有用,下一篇我会讲到


最后

欢迎大家关注Leo的CSDN博客

猜你在找的Swift相关文章