大伙经常做项目都知道,iOS程序崩溃,很多都是因为 数组越界 访问野指针 适配布局语句不合法 版本系统兼容 等原因造成的,但遇到多人协同开发的项目,遇到崩溃问题,有时候往往我们不能最快的定位到项目崩溃的代码位置,因为很多代码不是我们本人写的, 我们尝试了 为 xcode 设置全局断点的方法,来获取代码崩溃的位置,但这种方法,只有60%的成功几率。
假设我们尝试了之前寻找崩溃的方法都不管用,还好我们可以使用 LLDB命令行来调试
我们运行这样一段代码
很明显是一个数组越界的语句,运行结果,程序直接crash
我们看一下崩溃日志,发现看到的都是一些 地址之类的相关信息,不知道这些地址有什么作用,其实这些地址非常有用,我们分析一些 堆栈帧 ,记住找到 崩溃帧所在的前一帧的地址
当我们有一个地址,想找到具体地址对应的文件的位置的时候,可以使用 target modules lookup —adress命令
也可以简写为 target modules lookup -a
随着LLDB版本的更新,target modules 又可以简化为 image
所以 target modules lookup -a 可以写为 image lookup -a 我们尝试一下这个命令
发现LLDB帮我们定位到代码崩溃在了 VIewController这个文件 textLLDBCrash 这个方法里,具体代码在 36行,对照图一中 数组越界的代码行数就是 36行,一点没错。