bt all 命令是打印所有线程的堆栈信息。打印出来的信息太多,就不展示了!
6.image 命令
image list 命令可以列出当前App中的所有module(这个module 在后面符号断点时有用到),可以查看某一个地址对应的代码位置。
除了 image list 还有 image add、image lookup等命令,可以自行查看。
当遇到crash 时,查看线程栈,只能看到栈帧的地址,使用 image lookup –address 地址 可以方便的定位到这个地址对应的代码行。
断点
Xcode 中的断点也是很有学问的,有普通断点、条件断点、符号断点、异常断点等很多种。
1.普通断点
打一个普通断点,只需要找到对应的行,在代码左侧(行号上)点击一下即可。
2.条件断点
条件断点是一种很有用的断点,特别是在for 循环中。如果我们需要在i = 5 时添加断点,其他时候不加,那么就可以使用条件断点。条件断点是在普通断点上 右键,选择 Edit Breakpoint...,再设置一个条件即可


3.符号断点
符号断点就是 Symbolic Breakpoint,其实是针对某一个特定函数的断点,可以是一个 OC函数,也可以是 C++函数。 添加的地方如下:


Symbol 栏 可以填 [类名 方法名]或者 方法名 ,module 也是选填项,它就是上面 image 命令中列出来的module。
例如 ,我们如果只填一个viewDidLoad,那么就会在所有类(包括第三方库)的viewDidLoad 处打断点。
符号断点在调试一些没有源码的模块时比较有用,比如调试一个第三方提供的Lib库,或者系统的模块,可以在相应函数处下断点,可以大概调试清楚程序的运行流程,也可以在断点的时候查看到参数信息。
4.异常断点
如果程序运行就崩溃,我们可以打一个异常断点,这样崩溃时就会触发断点,很容易定位到问题所在,也能看到更多的崩溃相关信息,如Log,函数调用栈。










