Xcode Debug之添加断点

1.添加全局断点(Add Exception Breakpoint)

通过添加全局断点,可以快速定位导致程序奔溃所在的代码行。

在Xcode 中找到Breakpoint navigator(也可以通过快捷键command + 7跳转),在最下面点击加号,第一个就是:

这样就添加了一个全局断点:

程序只要一奔溃,就会触发该断点,并定位到导致奔溃所在的代码行。

2.添加符号断点(Add Symbolic Breakpoint)

Symbolic Breakpoint 是一种非常强大的断点。

如上步骤选择第二项:

添加之后在Symbol一栏输入viewDidLoad。

这样一来,在程序中所有的viewDidLoad方法被调用时都会触发断点。

当然,我们页可以仅仅为特定的某个类的方法添加断点。在Symbol一栏类输入“[ClassName viewDidLoad]”(Objective-C)或“ClassName.viewDidLoad”(Swift)即可。

3.为断点添加条件(Condition)

有时候我们可能会在某个循环中创建断点,但一次又一次地点击continue知道我们想要的条件出现,显然是一种非常低效的方式。好在Xcode为我们提供了条件断点。

首先在下列代码中插入一个普通的断点

右键点击断点,选择Edit Breakpoint,在Condition一栏输入i > 90

这样一来,只有当程序运行满足条件之后才会触发断点了。

4.监控断点(Watch)

我们调试程序的大部分时候都是为了监控某个变量的变化,在代码中变量出现的地方添加断点不仅累而且还可能漏掉,事后还得一个一个删掉,实在很累。

我们可以通过为变量添加监控断点来简单地做到这一点。

找到变量第一次出现的地方,添加一个普通断点,进入debug模式后在Variables View中右键变量,选择Watch变量名。这样每一次该变量都会触发断点告知我们。

我们可以在Console中看到其变化。

5.日志信息断点

最常见的Debug方式应该就是NSLog或者println(swift)了。通常我们会通过这种方式来打印输出各种实例信息以检测程序运行状态。

但这一调试方式也有很明显的缺陷:

  • 无法在运行时添加
  • 添加数量过多之后干扰视线,又需要麻烦地删除或注释掉
  • 会编译进App,在正式版本中需要关闭(当然我们可以通过宏来判断是否应该编译,但这会增加额外的操作不是吗)

所幸在Xcode中我们还有另外一种选项。

在如下代码中添加一个普通断点,选择Edit Breakpoint,然后点击Add Action,选择Log Message,在输入框中输入 The number is:@[email protected]。

运行效果如下图所示:

这里因为有日志输出,所以我们可以勾选上最下面的Automatically continue after evaluating actions,这样这个断点就只会安安静静为我们输出日志了。

时间: 2024-11-05 12:20:57

Xcode Debug之添加断点的相关文章

XCode debug中添加查找debug和控制台的办法

我们每一次编码完成后紧接着便是编译运行起来,看看程序运行的结果是否达到了我们的预期,此时,我们离不开控制台给我们输出必要的信息,为此, 当程序跑起来时,我们的控制台遍自己弹出来,这是不是蛮好的?  又当我们结束调试需要继续编码时控制台自动隐藏是不是更好? 那么,就按如下设置吧: 1:当编译运行起来以后自动显示控制台 2:当结束运行状态时自动隐藏控制台: 二.查看 Crash: 我们在开发过程中,总是不可避免的产生你无法预期的Crash.其实拥有了ARC以后,Crash的机会相对少了很多,只不过偶

xcode debug

程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode.这篇博客就主要介绍了 Xcode 中几种能够大幅提升代码调试效率的方式. “If debugging is the process of removing bugs, then programming must be the process of putting them in.” ——Edsger W. Dijkstra 添加条件 有时候我们可能会在某个循环中创建断点,但一次又一次地点击 c

Eclipse开发环境debug模式调试断点从jar跳到源码

Eclipse开发环境debug模式调试断点从jar跳到源码 说明:本案例使用jsch-0.1.54.jar和源码做test,项目分成两个,一个是jsch的源码,另一个是测试案例 一.下载JSch.的jar包和源码  http://www.jcraft.com/jsch/ 二.新建两个工程分别是JSch.TestDemo,JSch中引入jsch-0.1.54.jar的源码,项目结构如下图 SftpConnect.java package com.kevin.test; import com.jc

Xcode开发调试技巧—断点调试

http://www.itcast.cn/news/20141015/16463596716.shtml 1.Condational Breakpoints(条件断点) 普通断点只要执行到断点所在行就会停止程序,但是有时候我们想当满足一定条件时才停止程序.这个调试技巧在当你想要捕获一个循环中的变量的特定值或者一些不常发生的情况时是非常有用的,而不用你每次迭代都停止来查看. 怎样开启条件变量? 1.添加一个普通断点 2.右键点击断点选择“Edit Breakpoint” 3.打开断点编辑器,你可以

iOS开发技巧(系列十七:使用Xcode DEBUG模式和RELEASE模式)

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程.但是一个发布的程序,里面带有太多的NSLog输出,肯定对于App性能有所影响,这时候我们可以使用一个宏定义来处理,在开发的时候使用DEBUG模式,在发布的时候使用RELEASE模式.这样,发布的App就不会在程序内部做大量的NSLog输出了. 简单的代码如下, #if defined(DEBUG)||defined(_DEBUG)     NS

Xcode 7.3 添加和配置pch文件?

开发工具/原料: 1.Mac 2.Xcode(我这里目前用的Xcode的最新版本Xcode 7.3) PCH文件的部分发展史: 定义:pch全称为“precompiled header”,也就是预编译头文件,有利于节约开发时间.代码维护时间. 发展:在老版本的Xcode里面,创建项目之后会自动创建有pch文件,在里面往往写一些经常使用的框架头文件或者一些宏定义的URL地址,这里面定义后可全局使用,但是在Xcode6里面项目创建后不再自带pch文件. 方法/步骤: 1.打开Xcode,创建项目.当

Visual Studio无法添加断点

今天在写代码的时候突然发现无法添加断点,更加详细的场景是“按F9可以添加调试行,但是断点不显示,且显示代码行数左边的灰色区域不见了”找了各种方法也没有解决,然后重启.修复甚至重装都不行,最后在万千网页中无意中发现了解决方法,原因是因为我的“边距指示栏”被隐藏了.下面是解决方法: 边距指示符栏——"代码编辑器"左边的灰色区域,显示如断点.书签及快捷键等边距指示符. 到“工具——>选项——>文本编辑器——>常规" 中勾选 "指示器边距" 即可

Xcode Debug 指令,不污染源码的添加判断的调试方式

触类旁通,使用C#时,惊讶于Visual Studio细节的设计 今天,突发奇想,Xcode是不是也有类似的功能,在不污染源码时,添加判断条件,符合提交debug断点才生效,且可以输出指定内容. 双击断点或右击选择Edit 1. 恭喜你已经进入断点的编辑功能 2. 可以设置condition,断点生效条件:action,生效的时候打印的内容 这样子就实现了不污染任何源码,做到断点调试:尤其是在循环内,指定条件生效,有效避免了手动处理断点下一步,或者将判断写入源码内的问题,超赞!!! 原文地址:h

Xcode使用心得01:断点中断问题和调整编译目标

在obj-c系列博文里,我们粗浅的介绍了obj-c的一些语法以及F库中的一些标准类的使用,但是实际编写拿得出手的APP还是得老老实实在os x上用Xcode写啊!最近上网无意中发现还有支持os x和ios的ruby框架啊,手又痒了!另外Swift也推出了,Xcode6.0beta也装了,这个世界诱惑就是多啊!不过言归正传,在这一系列博文里还是诚恳的记录下使用Xcode过程中出现的问题以及解决方法吧. OK!言归正传,在使用Xcode6beta时(以下全部简称x6b),发现设置断点,中断后直接跳到