iOS调试——断点
来源:互联网 发布:java算法实例 编辑:程序博客网 时间:2024/06/05 16:32
设置和查看断点
1.第一次运行编写成功的程序时,往往会出现始料未及的结果。为了找出原因,我们需要在程序中设置断点进行调试。断点指在条件满足的情况下程序会挂起在那里,我们往往可以在那里查看变量、单步运行等操作内容。
2.断点可分为以下三种类型:
文件行断点:执行到特定文件某一行时触发。
符号断点:调用某一个函数或方法时触发,程序挂起在函数或方法的第一行。
异常断点:产生异常时触发,分为OC异常断点和C++异常断点。OC异常断点会在遇到OC异常时触发,C++异常断点会在遇到C++异常时触发。
3.文件行断点设置
3.1设置文件行断点很简单,直接点击该文件中得行号即可。
3.2断点可以删除、禁止使用和编辑。在断点上点击鼠标右键,弹出的快捷菜单如图:
当选择Disable Breakpoint菜单项时,会禁止使用断点。这是断点处于灰色状态。
当选择Delete Breakpoint菜单项时,可以删除断点。此外,也可以拖曳断点离开行号列,当出现一个小云朵时释放鼠标,这样也可以删除断点。
当选择Edit Breakpoint菜单项,会弹出断点编辑对话框,如图:在断点对话框中,可以为断点设定触发条件和忽略次数,并添加动作。
4.符号断点设置
4.1设置符号断点与设置文件行断点不同,需要打开断点导航面板。如图所示:。
在断点导航面板中,可以看到所有的断点。
4.2点击断点导航面板左下角的+按钮,会弹出如图所示的菜单:
其中有两项,Add Exception Breakpoint和Add Symbolic Breakpoint。前者可以创建异常断点,后者可以创建符号断点。
4.3.选择符号断点,弹出创建符号断点对话框:
5.异常断点设置
5.1.选择异常断点,弹出创建异常断点对话框,如图:
5.2.在Exception项中,可以选择OC或者C++异常断点,Break项可以设定On Throw还是On Catch,即断点是在本地抛出时触发还是捕获时触发。
5.3.如果抛出异常,没有捕获和设置断点,程序就会直接跳到main.m的main函数里面的。
如果设置了断点,程序会挂起在相应的行上。
5.4.默认情况下,异常会再输出窗口中输出。eg:unrecognized selector sent to instance 0x7541270
//=======================================================
// 断点
断点:故名思意,就是断了的点。
1.断点用来暂停调试器,实时查看符号和对象。包括LLDB在内的有些调试器支持移动指令指针(instruction pointer),从另外一个位置继续调试。
断点导航面板
1.添加到工程中断点会自动在断点导航面板中列出。
2.断点导航面板还支持为异常和符号设置断点。
异常断点
1.在断点导航面板中设置一个异常断点。打开断点导航面板,点击左下角的+按钮,选择Add Exception Breakpoint,接受默认设置,添加一个断点。
再次运行该工程,可以看到调试器暂停了应用的执行,程序正好停在抛出异常的那行。
2.异常断点能帮助我们理解异常的起因。故在新建工程的时候,要做的第一件事情就是设置一个异常断点。
符号断点
1.符号断点会在执行到特定符号时暂停程序。符号可以是一个方法名、类中的一个方法或者任何C方法(objc_msgSend).
2.可以在断点导航面板中设置符号断点,和设置异常断点差不多,不过要选择的是符号断点而不是异常断点。如图:
当运行到该方法时程序会停止执行。
符号断点通常用来观察你要关注的方法。
编辑断点
1.开发者创建的每个断点都可以在断点导航面板中修改。右击断点,然后从菜单中选择Edit Breakpint的方式来编辑断点。可以看到一个断点编辑页。
2.可以编辑断点来设置一个条件,从而创建一个条件断点,只在满足设定的条件时该断点才会执行。
共享断点
1.断点现在与要保存到版本控制系统中的代码关联了起来。Xcode 4(以及以上版本)允许将断点提交到版本控制系统,从而与合作者共享它们。
全局断点:
问题的提出:有时候在程序出错的时候不能准确定位到崩溃的哪一行代码,而是直接跑到main循环或者AppDelegate里面,或者会给你这样的提示:
EXEC_BAD_ACCESS:
这个时候我们真的很冲动,连一点的堆栈信息都没有。这个时候就需要用全局断点了。(Global BreakPoint)
如果所示:
在Debug导航面板上进行上图的操作,就建立了全局断点。这样只要遇到错误,debug程序就会自动定位到栈底的信息,也就是你最先出错的代码的那一行。
条件断点(Condational Breakpoints)
问题提出:for循环中确定某一次循环时的变量的值
这样只有遍历到c==“H”的时候断点才会触发。
符号断点(Symbol breakpoints)
这样,在程序中所有的viewDidLoad方法被调用时都会触发断点。
当然,我们也可以为特定的某个类的方法添加断点。在Symbol一栏中输入特定的方法即可。
- IOS调试—断点调试
- iOS调试—断点调试
- iOS调试——断点
- IOS调试技巧——异常断点
- IOS调试—断点调试以及动态输出
- IOS调试—断点调试以及动态输出
- IOS调试—断点调试以及动态输出
- ios 断点调试技术
- iOS的断点调试
- iOS调试技巧-断点调试
- Xcode开发调试技巧—断点调试
- Xcode开发调试技巧—断点调试
- iOS断点调试(xcode )
- 漫步IOS--Xcode断点调试
- iOS 断点调试小技巧
- LLDB在IOS断点调试
- iOS LLDB调试器和断点调试
- iOS LLDB调试器和断点调试
- 让PowerShell2.0运行在.Net 4.0最简单的方法
- ubuntu14.04下MYSQL显示中文乱码问题解决方法
- 深入剖析tomcat之servlet容器
- 绘制六芒星战斗力属性图 —— h5 canvas 初体验
- 2015_09_01_暑假集训结束_第一次省赛
- iOS调试——断点
- Android fill_parent、wrap_content和match_parent的区别
- 获取不到断点
- Python计算Project Euler Problem 3
- priority_queue的用法
- 理解C++存在继承和组合的对象构造函数调用顺序
- android 读取doc docx xsl xslx
- Android第三方框架的设置、导入、使用
- 图像去雾算法的快速实现