iOS断点

首先,最简单的断点就是在Xcode项目文件中任意一行行号那点一下,就是加了一个断点

再次点击会变成浅蓝色,表示disable掉了

disable掉的断点不会起作用,但会在左上角蓝色的标签那留下记录,这里记录下了你设置的所有断点,然后在这你可以点一下浅蓝色的位置enable一些断点。

删除断点只要在断点位置右键点击Delete Breakpoint就行了;也可以左键点住断点往外拖再松掉,会出现一个灰尘气泡;还可以在标签那边的断点右键delete。

设置了一个断点后,再执行程序,程序编译到断点处时会停止,并出现这样的画面,在这里我们可以看到一些参数,self代表当前对象,其他的则是执行到当前语句时这个方法或者说这个栈里面分配的对象

如果想查看更多对象的话,点击左下角选择all。

在右边lldb这是一个debug的工具,可以输入一些命令来打印一些信息,左边的信息可以通过这里打印出来

可以输入po(pring project)来打印对象以及p(pring)来打印一些基本类型或者结构体

如果不喜欢命令行,也可以在左边选择一行右键选择Pring Description

这样在右边也会像命令行一样在lldb这打印出来

lldb还有很多功能,可以在苹果官方文档中输入lldb查看。

在上方Debug里面还有很多命令。continue表示继续运行;continue to current line表示继续运行到当前行;step over表示不进入当前方法,直接进行下一个方法;step into表示进入到方法中的方法;step out则和step into正好相反的操作。还有step over instruction和step into instruction,instruction表示指令的意思,CPU的指令,如果想单步CPU的指令,可以点击它们,它们是指令级的step;至于step over thread和step into thread表示只在当前线程当中执行,其它线程都停止执行,这个主要在debug多线程时使用,为了防止其它线程的干扰。

接下来介绍一些断点高级一些的用法。

找到一个循环,比如for循环,在其中设置一个断点,再右键选择edit breakpoint,对这个断点进行一些定制,这里有一些参数,condition表示一个条件,当满足该条件时程序断住;ignore表示ignore多少次后断住;action可以添加一个动作,比如debugger command,可以输入一个lldb的命令,当程序断住时执行这个动作;最后一个options选中的话表示不断住,程序满足条件执行动作后并不断住。

有时候我们想要知道某件事情发生的时候断住,但并不能确定在哪一行代码,这时候就需要一些更加高级的断点。在断点这个界面左下角有个+号,点击它选择add exception breakpoint,exception表示异常的意思

然后便出现了一个all exceptions,设置它会出来一些选项,第一个exception可以选择object-c或c++还有all,一般选择all就ok了;break可以选择在抛出异常或处理异常时断住,默认是抛出;action和options就和前面提到的一样了。最好在项目中添加一个这样的断点以备用。

接下来讲一下另一种断点,在断点那个界面左下角+号那选择add symbolic breakpoint,基于符号的断点

设置它也会出来一些选项,symbol中可以写一个方法,表示当程序执行到该方法的时候断住;module表示在类库或可执行的程序里;下面的就和前面讲的都一样了。

以上讲的Debug版的断点,还有release版的断点,在中选择edit scheme

然后在这里选择release,在release版中设置断点运行程序时会进行优化,信息可能不是很有用,顺序有时也会和原来不一样,Debug版则会忠实的按照顺序运行,因此release执行速度会比较快,但平常我们开发都使用Debug版,当你的程序要发布时使用release版,保证用户使用的是你的release版,因为它的性能要优于Debug版,它跑的更快,运行的文件更小。

有些情况下不适合使用断点,比如有些bug只在release版里出现,Debug中正常;多任务,多线程的程序;实时性要求比较高的,比如依赖时间的;客户端和服务器架构的;还有进程之间,某个进程依赖你要设置断点的进程时。这时就要使用另外一种手段,打印log(日志)。

时间: 2024-11-03 03:34:58

iOS断点的相关文章

IOS断点下载

下载的一些用法 ①对于小文件,可以直接下载,无需断点下载等处理. 1 -(void)clickDownBtn{ 2 NSURL *url = [NSURL URLWithString:@"https://picjumbo.imgix.net/HNCK8461.jpg?q=40&w=1650&sharp=30"]; 3 if (self.imgView.image == nil) { 4 [self downLoad:url]; 5 } 6 } 7 8 //下载过程 9

IOS开发的哪些异常之异常断点

从Android开发的异常报错到IOS的异常闪退,经历了不一样的处理过程.对于IOS的异常报错刚開始总是非常茫然,永远仅仅告诉你有异常.然后就跳到main.m文件,却不曾我告诉她在那出现.真是吊人胃口.直到我再也无法容忍这个看着异常提示而无法定位的情况,我发现了Exception Breakpoint.下面来自官方的文档: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnlhbl92YW4=/font/5a6L5L2T/fontsize/400/fi

iOS开发网络篇—大文件的多线程断点下载(转)

http://www.cnblogs.com/wendingding/p/3947550.html iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分). 项目中用到的主要

iOS开发断点调试高级技巧

关于LLDB调试,很多iOS开发者可能就是停留在会下简单的断点,使用最多命令也就是po.无可厚非,这些简单的调试对于简单的问题来说应该是游刃有余.但是如果稍微复杂一些的问题,比如我之前遇到过友盟SDK里面的一个问题.我很想往里面下一个断点,可是对于.a的静态库来说,这根本不可能,最终还是我们组大牛使用命令的方式下了断点解决了这个问题.感觉这些知识很有必要,我于是把LLDB的基本调试命令都学习了一下,并在此与大家分享. 虽然博客很长,不过耐心看完,然后动手实践,一定会有很大帮助. breakpoi

ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的

解决办法:把1删掉 2选择debug模式 ios 使用xcode调试代码的时候进入断点显示变量全是nil,但NSLog输出那个变量却是有值的,布布扣,bubuko.com

iOS开发网络篇—多线程断点下载

iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分). 项目中用到的主要类如下: 完成的实现代码如下: 主控制器中的代码: 1 #import "YYViewControl

iOS开发网络请求——大文件的多线程断点下载

iOS开发中网络请求技术已经是移动app必备技术,而网络中文件传输就是其中重点了.网络文件传输对移动客户端而言主要分为文件的上传和下载.作为开发者从技术角度会将文件分为小文件和大文件.小文件因为文件大小比较小导致传输所需时间少传输就快,因此不太容易影响用户体验,可用的技术就多.而大文件因为文件大小比较大导致传输时间长,因此就需要考虑到各种用户体验,比如避免在上传下载文件过程中阻塞主线程影响用户体验,就需要使用到多线程技术:为了给用户友好的进度提示,因此又需要开发中跟踪数据上传和下载数据的变化:为

iOS 大文件断点下载

iOS 在下载大文件的时候,可能会因为网络或者人为等原因,使得下载中断,那么如何能够进行断点下载呢? // resumeData的文件路径 #define XMGResumeDataFile [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"resumeData.tmp"] #import

iOS开发网络篇—大文件的多线程断点下载

iOS开发网络篇—多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始,创建一个和要下载的文件大小相同的文件(如果要下载的文件为100M,那么就在沙盒中创建一个100M的文件,然后计算每一段的下载量,开启多条线程下载各段的数据,分别写入对应的文件部分). 项目中用到的主要类如下: 完成的实现代码如下: 主控制器中的代码: 1 #import "YYViewControl