問題
最近發(fā)現(xiàn)有個(gè)項(xiàng)目出現(xiàn)crash,但是定位不到具體那一行,crash為SEGV_ACCERR異常俏险。
image-20210823140717444.png
SEGV_ACCERR一般是內(nèi)存問題肴楷,比如多線程操作某變量水由、堆棧非法訪問、野指針等
查看跟蹤數(shù)據(jù)
image-20210823141250912.png
發(fā)現(xiàn)crash基本都發(fā)生在切換前后臺(tái)等操作中
無(wú)其他線索可查赛蔫,于是嘗試使用逆向工具h(yuǎn)opper disassembler
hopper
hopper disassembler主要就是將Mach-O文件的機(jī)器語(yǔ)言代碼反編譯成匯編代碼砂客、OC偽代碼。
打開hopper導(dǎo)入應(yīng)用app文件呵恢,
image-20210823141706341.png
前面指向的為崩潰地址鞠值,使用hopper -> Modify -> Change File Base Address...
后面指向的項(xiàng)目的基地址,使用hopper -> Navigate -> Go to Address or Symbol...渗钉。
輸入兩個(gè)地址后就能定位到崩潰的地方
image-20210823142409624.png
接著結(jié)合源碼與hopper上的匯編代碼很快定位出是野指針問題引起