全文概要:
1.如何定位bug
2.如何设置全局断点
3.如何导出dSYM文件
4.崩溃分析,解析dSYM文件
一.当app在运行中崩溃了,我们如何定位有问题的代码
有2种方式:
1.在Xcode中打全局断点,重新run一次,复现崩溃,Xcode会自动跳转到有问题的代码那一行;
2.当线上app运行时通过dSYM文件定位bug。
二.如何设置全局断点
1.在Xcode的左侧导航区,点击左方又尖的图标->点击左下角的加号->选择Exception BreakPoint,如图1.1:
2.选择后会弹出提示框如图1.2,点击空白处提示框就会消失,这样就设置好了全局断点,如果有其它断点需求,可以自行点击选项进行设置。
三.每 Archive 一次,都会生成 dSYM 文件,如何导出 dSYM 文件
1.找到Xcode工具栏->Window->Organizer->目标项目->右键 Show in Finder -> 显示包内容-> dSYMs 中的 xx.app.dSYM 就是我们要找的 dSYM 文件,如图2.1:
四.崩溃分析
1.需要三个文件:崩溃时产生的Crash文件(本文将它命名为 crash )、打包时产生的 dSYM 文件、symbolicatecrash(Xcode自带的崩溃分析工具),建一个文件夹把上述3个文件放到这个文件夹中,文件夹的名字可以任意命名,我在这里命名为 Crash;
注:命令行查找 symbolicatecrash 路径的命令:find /Applications/Xcode.app -name symbolicatecrash -type f
2.用命令行解析文件:
2.1. 先切换到 Crash 文件目录, 输入cd ,然后将 Crash 文件拖入命令行,再按回车键;
2.2.设置环境变量:exportDEVELOPER_DIR=/Applications/XCode.app/Contents/Developer 或 export DEVELOPER_DIR=$(xcode-select --print-path),两句的作用是一样的,哪一句都可以。这一句命令是非必须的,可以跳过这一步直接执行2.3,当2.3执行不成功时再执行这一步。也可以先执行这一步,更保险一些,如图3.1:
2.3使用命令解析Crash文件:
symbolicatecrash 路径 + crash 路径 + dSYM 路径 + ">" 解析后生成的文件名。
注:在命令行中写的时候不需要 + 和 "",解析后生成的文件名随便取,本文取名"symbol.txt"
例:./symbolicatecrash ./crash ./Demo.app.dSYM > symbol.txt, 如图3.2
此时在看Crash文件中就会发现多处一个 symbol.txt 文件,这个文件就是我们所需要的解析过的崩溃信息文件。