Xcode调试方法总结
来源:互联网 发布:java中的圆周率 编辑:程序博客网 时间:2024/05/16 17:21
前言:。编写代码过程中出现错误,异常是不可避免的通常我们都需要进行大量的调试去寻找,解决问题这时,熟练掌握调试技巧将很大程度上的提高工作效率接下来就说说开发过程中的Xcode的调试方法。
1.启用NSZombie对象(开启僵尸对象)。
这个技巧主要用来追求终重复释放的问题。个人认为,ARC推出以来。项目的基本是基于ARC环境。不用开发者主动去调用释放去释放对象,所以不用太在意这个方法。这里就不多做介绍了。了解想该方法的同学请坐飞机
2。断点调试(全局断点,条件断点)
一,全局断点:
- 1
- 2
这两行代码,没有添加全局断点时,运行崩溃,直接就跳到了渑函数,如下图:
接下来添加全局断点,方法如下图:
添加之后运行,奔溃后,程序停留在了崩溃那行代码。
是不是很方便,很省事。哈哈!(ps不过有的crash,这种方式定位不到)
二,条件断点:设置断点触发的条件,方便开发者对特定情况进行调试
如下图:
在for循环中添加一个断点,右击断点选择“编辑断点”,然后设置断点触发条件。
这个例子当“i == 5”时,断点触发,如下图:
3.静态分析
静态分析器主要用于分析内存,避免内存泄漏。主要对以下情况进行分析。
未使用的实例变量,未初始化的实例变量,类型不兼容,无法达到的路径,引用空指针
使用:command + shift + B,如下图就能轻松找到可能内存泄漏的代码,然后我们根据代码环境进行修复就可以了(ps:有的内存泄漏可能检测不出来,还是需要我们在写代码时对内存这块多留点心。)
4. LLDB调试器
这个方法是我今天主推的方法。比较高级,也更加灵活,方便。
随着Xcode5,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器。其实Xcode已经帮我们完成了大部分工作,而且很多东西也可以在Xcode的中直接看到所以这里我们只列举常用的命令。
打印:对,打印的缩写:该命令如果打印的是简单类型则会列出简单类型的的类型和值,如果是对象会打印出对象的地址 。po
,print对象的缩写,用于输出OC对象
如下,当运行到断点处时,控制台就会出现LLDB的调试命令行。只需在这里进行调试。
expr:expression的缩写,可以在调试时动态执行指定表达式,并将结果打印出来。常用于在调试过程中修改变量的值。
如上图,你在控制台输入 expr a=2
你就能看到(NSInteger) $11 = 2
这是a的值就被动态改成了2
除此之外,还可以使用这个命令生成一个新的对象,如:expr int $b = 0
p $b
这条命令用于输出新申明对象的值(注意要加$)
image:image命令可用于寻址,有多个组合命令,在控制台输入help image
可查看图像的用法。比较实用的用法是用于寻找栈地址对应的代码位置,下面我们来举例例:
- 1
- 2
这段代码很明显会崩溃,运行之后抛出下面的异常
- 1
- 2
- 3
- 4
- 五
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
现在我怀疑出错的地址是0x00000001044a5829
(可根据执行文件名或最小的栈地址判断)进一步为精确定位我们柯林斯输入侧以下命令image lookup --address 0x00000001044a5829
命令执行后报道查看查询查询结果如下:
- 1
- 2
由此,我们可以看出出错的地方是ViewController.m文件的第21行。
我们还可以使用image lookup命令查看具体的类,如下:
- 1
- 2
- 3
- 4
- 五
- 6
- 7
- 8
- 9
- 10
call
call:即调用,如我们在viewDidLoad:
设置一个断点,在程序中断的时候输入call self.view.backgroudColor = [UIColo redColor]
继续运行程序,查看就变成红色了,在调试的时候灵活运用call command令可以达到事半功倍的效果。
参考:
objc.io#19#与调试器共舞 - LLDB的华尔兹
浅谈LLDB调试器 与调试器
交互
- Xcode 调试方法总结
- Xcode 调试方法总结
- Xcode调试方法总结
- Xcode调试总结
- XCode iOS调试总结
- Xcode调试打印方法
- Xcode调试打印方法
- XCode调试方法
- XCODE常用调试方法
- Xcode调试方法
- Xcode 调试FrameWork方法
- Xcode开发调试技巧总结
- Xcode开发调试技巧总结
- 【Xcode使用技巧】Xcode调试方法
- Xcode常用方法总结
- xcode静态库调试方法
- Xcode 调试之方法大全
- xcode 11db 调试台调试方法
- tablayout 设置下划线宽度。
- tensorflow安装、tensorboard使用
- 利用eclipse新建的java web项目没有web.xml文件怎么办?
- 初学QML之qmlRegisterType
- let与var的区别
- Xcode调试方法总结
- 使用QT点击运行按钮无任何反应,出现错误Could not create directory
- Openstack api 学习文档 & restclient使用文档
- (学习中)Tensorflow tower
- react-native-qiniu源码修改
- Tomcat共享ServletContext
- CodeForces Gym 101630简要题解
- 有没有大神来帮忙看一下
- Reflcetion2017.12.11