Xcode Debug 技巧之一

0x00 前言

这个技巧是在新浪微博上看到的,源地址为戴铭的这条微博,不过看评论有说不懂的,其实第一次看这个微博,看了这些图,我也没怎么在意,完全是因为 App 崩溃后 Xcode 经常是定位到 App 的起始方法里面,让人有点抓狂,如果项目是用 OC 写的,那么可能是如下这个情况:

Swift 就是微博配图里面的那样:

看完这个微博之后,我并没有转发,但是呢,就在当天下午,项目经理让我改一个 Bug,然后我重现这个 Bug 之后,发现定位到的代码就是上面 OC 版本的那样子,以前也经常遇到,然后我就跟平时一样,查看 Console 中的 Log,打算从 Log 上下手,当我看到 Log 我就又懵逼了,还是跟以前一样,这个 Log 并没有什么卵用:

就告诉了我原因是数组越界,然而项目大了,界面复杂一点了,我怎么知道是哪个数组越界了,这样找起来不是非常浪费时间吗?然后我就想起来,之前看到的那条微博,然后我马上去微博上找了,因为我还记得是大神叶孤城_转发的,然后我就找到了,然后看了下,跟着配图操作了一下,哇擦类,竟然成功了!然后我就打算写一篇文章,记录在自己的博客上面,所以就有了这篇文章。好了,废话说了这么多,开始一步步操作吧。

0x01 操作步骤

首先,当出现这中崩溃,Xcode 是直接帮我们打开了 Debug navigator 界面,就是上面 OC 版本的那样子,然后我们点击标识为 0 的进程:

然后在 Console 中输入如下命令,然后回车:

接着,我们切换到 Breakpoint navigator:

点击最下面的“+”号,选择 Add Exception Breakpoint:

然后右键选择 Edit Breakpoint…:

接着点击 Add Action:

然后输入刚刚的命令:

最后,重新运行,然后重复之前的操作,将 Bug 重现一下,就会定位到导致 App 崩溃的那一行代码了:

下面是 Console 的 Log:

就是这么简单啦!

0x02 更新

2015.12.04 更新

按照上面一步步设置之后,在当前项目是可以的,不过在新项目当中就不能用了,还要再手动设置一次,很麻烦,再做如下这步,就可以在全部的项目当中使用了,不用每一个新项目都设置一遍: