面试题答案
一键面试- 启用僵尸对象检测(Zombies Instrumentation):
- 在Xcode中,选择“Product” -> “Scheme” -> “Edit Scheme”。
- 在弹出的窗口中,切换到“Run” -> “Diagnostics”选项卡。
- 勾选“Zombies”,这会使系统在对象被释放后,将其转换为“僵尸对象”,当尝试访问这些对象时会抛出异常。
- 设置异常断点:
- 在Xcode的导航栏中,点击“Breakpoint Navigator”(快捷键
Cmd + 7
)。 - 点击左下角的“+”号,选择“Add Exception Breakpoint”。
- 在弹出的窗口中,可以设置断点捕获所有异常,或者根据需要选择特定的异常类型,如Objective - C异常。这样当异常发生时,程序会停在引发异常的代码行,有助于定位野指针等内存访问错误。
- 在Xcode的导航栏中,点击“Breakpoint Navigator”(快捷键
- 使用调试工具和命令:
- LLDB调试器:当程序因异常停在断点处时,Xcode默认会调用LLDB调试器。
po
命令:在LLDB控制台中,可以使用po
(print object的缩写)命令来打印对象的信息。例如,如果怀疑某个指针导致问题,可以使用po <指针变量名>
来查看该指针指向的对象(如果它不是nil
)。这有助于判断指针是否指向了预期的对象,或者是否为野指针。bt
命令:使用bt
(backtrace的缩写)命令可以查看当前的调用栈。通过调用栈可以了解到函数的调用顺序,从而追溯到问题发生的源头,例如是从哪个函数开始出现对野指针的访问。