问题
最近发现有个项目出现crash,但是定位不到具体那一行,crash为SEGV_ACCERR异常。

image-20210823140717444.png
SEGV_ACCERR一般是内存问题,比如多线程操作某变量、堆栈非法访问、野指针等
查看跟踪数据

image-20210823141250912.png
发现crash基本都发生在切换前后台等操作中
无其他线索可查,于是尝试使用逆向工具hopper disassembler
hopper
hopper disassembler主要就是将Mach-O文件的机器语言代码反编译成汇编代码、OC伪代码。
打开hopper导入应用app文件,

image-20210823141706341.png
前面指向的为崩溃地址,使用hopper -> Modify -> Change File Base Address...
后面指向的项目的基地址,使用hopper -> Navigate -> Go to Address or Symbol...。
输入两个地址后就能定位到崩溃的地方

image-20210823142409624.png
接着结合源码与hopper上的汇编代码很快定位出是野指针问题引起