Xcode上手之调试程序

2017-02-21  本文已影响471人  狂奔的胖蜗牛

Xcode技巧系列:http://www.jianshu.com/notebooks/7639304/latest

1 静态分析

Xcode集成了Clang静态分析器,该分析器能够分析源代码,因为无需运行,即可对代码本身进行分析,所以称为静态分析器。

1.1开启

菜单栏Pruduct->Analyze即可开启分析操作。找到问题后,会在问题导航器中标记出来,如图:

屏幕快照 2017-02-21 下午9.52.25.png

分析器能够分析出来的问题有:

逻辑错误

逻辑错误可能会造成程序奔溃,比如OC中,使用了未初始化的变量等。使用静态分析器可以很方便的找出。

内存泄漏

内存泄漏,就是程序丢失了某个对象的引用,因而它不会被释放内存,该内存无法读取也无法写入,该对象一直占用着内存空间可能导致程序奔溃。

静态分析器可以有效的找出内存泄漏问题。

死存储问题

代码中不会被访问的变量,这种问题是无法通过编译找到的,需要通过分析器来寻找。

API问题

由于没有遵循项目中所使用的框架或者库的要求而导致的。

比如在viewWillDisappear方法中,未使用[super viewWillDisappear],该问题只有通过分析器查找到。

2 断点调试

断点类似于中断,当程序运行到断点所在位置时,Xcode会暂停程序运行,保护此时程序的数据,等待开发者的调试指令。

2.1 使用

通常情况下,在代码左侧的边列中点击即可添加断点。

屏幕快照 2017-02-21 下午10.14.00.png

程序运行到此处会暂停。想取消,再次点击。拖动到空白处即是删除断点。

2.2 控制断点

右键点击断点,即可对断点进行控制和管理。

屏幕快照 2017-02-21 下午10.17.42.png

Edit Breakpoint:编辑断点
Disable Breakpoint:断点失效
Delete Breakpoint:删除断点
Reveal in Breakpoint Navigator:在断点导航器中显示

2.3 断点设置

点击Edit Breakpoint即可进入断点设置,如图:

屏幕快照 2017-02-21 下午10.22.54.png

在断点导航器下方,还可以通过+添加别的类型的断点:


屏幕快照 2017-02-21 下午10.38.02.png

2.4 调试区域

调试区域如图:

屏幕快照 2017-02-21 下午10.47.53.png

调试工具栏,区域①

如图所示最上面区域,有很多按钮,控制应用的运行。从左到右依次是:

变量试图,区域②

显示当前程序暂停处,存放在堆栈中的变量和寄存信息。可以根据需要选择显示的变量内容:


屏幕快照 2017-02-21 下午11.01.23.png

小眼睛:快速查看。
叹号:打印描述信息。
Filter:可以过滤复杂的信息。

控制台,区域③

用于输出应用打印内容。

下方可以设置输出内容:All Output所有,Debugger output调试器输出,Target Output对象输出。

3 LLDB调试

我们前面的调试,实际上都是使用LLDB命令,只是Xcode界面封装过了。只有在程序暂停时才可以使用LLDB命令。

屏幕快照 2017-02-21 下午11.35.24.png

LLDB命令只能读取当前作用域下的变量信息。

3.1 po

打印对象信息,对应于:print object。
格式:po 对象

3.2 p

打印值。
格式:p (类型)表达式
p (NSInteger)[view.description length]

3.3 expr

expression命令,动态执行指定的表达式,并将结果打印出来。
expr view.tag = 3

更多的指令,输入help即可查看列表,help 命令,会列出指定命令的所有子命令。

结语

其余的调试方式,比如UI界面,性能调试等,由于使用比较少,就不说了。

上一篇下一篇

猜你喜欢

热点阅读