Xcode为开发者提供了非常方便简单的调试工具,节省开发时间。
我个人习惯,每新建或者接手一个项目,都会设置一个全局断点,程序在抛出异常的时候基本会定位到异常代码。
1.Xcode左侧导航选择断点 --> 左下角选择“+” --> Exception Breakpoint异常断点


2.很多程序员在调试数据时,会在某处代码写一个NSLog,或者打一个断点Printing description,再或者在控制台输入po xxx等 LLDB 命令来查看数据,这些方法都很浪费时间
其中最不可取的就是NSLog
首先我们要知道NSLog不是简单的封装了printf,NSLog的大量使用会严重影响程序的运行效率,这个可以从苹果的API中找到关于NSLog的详细介绍。
Logs an error message to the Apple System Log facility.
NSLog就不是设计作为普通的debug log的,而是error log。
NSLog也并非是printf的简单封装,而是Apple System Log(后面简称ASL)的封装。
在使用NSLog 时,NSLog会向ASL写log,同时向Terminal写log,而且同时会出现在Console.app中(Mac自带软件,用NSLog打出的log在其中全部可见);不仅如此,每一次NSLog都会新建一个ASL client并向ASL守护进程发起连接,log之后再关闭连接。
总之,因为NSLog的大量使用(特别在循环中出现NSLog)对我们程序的运行造成严重的不良影响
3.用自动断点任务来代替Printing description 和po xxx等 LLDB 命令
-
<1>断点双击或者右键编辑
这样当每次断点被触发后,我们设置的自定义命令就会被执行。整个过程无需手动敲 LLDB 命令,节约不少的开发时间。
Action 点击 Add Action,选择Debugger Command,输入要执行的 LLDB 命令,
勾选 Automatically continue after evaluating actions ,执行命令后,继续运行程序。
-
<2>条件断点
Condition 在符合条件时触发断点,比如_isOpen == YES的时候
-
<3>忽略断点
与条件断点相反,某些情况下我们不需要触发断点。比如,某个功能函数被多次调用,如果前两次调用不想触发断点,我们就可以忽略Ignore = 2
网友评论