Xcode 的正确打开方式——Debugging

程序员平常开发中有大量时间都会花费在 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
lua

添加条件spa

有时候咱们可能会在某个循环中建立断点,但一次又一次地点击 continue 直到咱们想要的条件出现,显然是一种很是低效的方式。好在 Xcode 为咱们提供了条件断点。.net

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

005X3nNxjw1epj51y64e5j30v2066dh5.jpg

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

005X3nNxjw1epj58d0rb9j30qg08475v.jpg

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

Symbolic Breakpointcode

Symbolic Breakpoint 是一种很是强大的断点。在 Xcode 中找到 Breakpoint navigator(你能够经过快捷键 command + 7),在最下方点击加号,能够看到它。开发

005yyi5Jjw1epj5ioxn6zj30ey0om40r.jpg

添加以后在 Symbol 一栏输入 viewDidLoad。
这样一来,在程序中全部的 viewDidLoad 方法被调用时都会触发断点。rem

005yyi5Jjw1epj5lvq259j30qg0am411.jpg

固然,咱们也能够仅仅为特定的某个类的方法添加断点。在 Symbol 一栏输入 [ClassName viewDidLoad] (Objective-C) 或 ClassName.viewDidLoad (Swift) 便可。

监控断点

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

咱们能够经过为变量添加监控断点来简单地作到这一点。

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

005X3nNxjw1epj670zy9gj30q40icae0.png

咱们能够在 Console 中看到其变化。(注:在 Xcode 6.1.1 版本中,在监控 Swift 变量时彷佛还有一些问题,没法正确地显示变量的值)

005yyi5Jjw1epj67lkus1j30nk0petcy.jpg

日志信息断点

最多见的 Debug 方式应该就是 NSLog and println 了。一般咱们会经过这种方式来打印输出各类实例信息以检测程序运行状态。

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

  1. 没法在运行时添加

  2. 添加数量过多以后干扰视线,又须要麻烦地删除或注释掉

  3. 会编译进 App,在正式版本中须要关闭(固然,咱们能够经过宏来判断是否应该编译,但这也须要额外的操做不是吗)

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

在以下代码中添加一个普通的断点,选择 Edit Breakpoint,而后点击 Add Action,选择 Log Message,在输入框中输入 The number is: @number @

005yyi5Jjw1epj6loqychj31ca0ig7b5.jpg

运行效果以下图所示

005X3nNxjw1epj6nvef7zj30mq0gota1.jpg

这里由于有日志输出,因此咱们能够勾选上最下面的 Automatically continue after evaluating actions,这样这个断点就只会安安静静地为咱们输出日志了。

发声断点

同日志信息断点,编辑普通断点,Action 选择 Sound。当触发断点时会发出设置的声音。此 Action 配合 Automatically continue after evaluating actions 选项,能够作到酷炫的听声识 Bug。:)

总结

上述的日志信息断点及发生断点都是能够添加触发条件的。经过这些断点操做,天然是可以极大地提高平常开发中调试代码的效率了。

相关文章
相关标签/搜索