對(duì)于一般的錯(cuò)誤全局?jǐn)帱c(diǎn)就可以快速定位,或者是根據(jù)控制臺(tái)的輸出內(nèi)容也可以快速定位錯(cuò)誤的原因!可是如果程序崩潰在main函數(shù)并且控制臺(tái)沒(méi)有任何輸入,那就比較頭疼了!一點(diǎn)一點(diǎn)排除實(shí)在是太浪費(fèi)時(shí)間了!根據(jù)我最近遇到的bug來(lái)講述一下如何快速定位錯(cuò)誤代碼的位置!

崩潰的位置
只能根據(jù)這僅有的有點(diǎn)提示信息進(jìn)行分析。exc_bad_access(code=exc_i386_gpflt)錯(cuò)誤的原因是內(nèi)存泄露,訪問(wèn)了已經(jīng)釋放的對(duì)象導(dǎo)致的;
首先通過(guò)xcode再來(lái)試一下定位錯(cuò)誤的位置
設(shè)置xcode開(kāi)啟僵尸對(duì)象的定位


這時(shí)控制臺(tái)有輸出了

可以確定的是DisclaimerViewController控制器的問(wèn)題,但是還是不夠準(zhǔn)確;
再來(lái)試試instruments進(jìn)行分析


不知道是不是xcode問(wèn)題 ,也無(wú)法定位到代碼位置;(以前我就遇到過(guò)xcode的原因 無(wú)法定位到代碼位置 重新安裝就沒(méi)有問(wèn)題了,如果可以定位到 麻煩留言告知一下)
利用終端定位
打開(kāi)活動(dòng)監(jiān)視器

活動(dòng)監(jiān)視器
找到相應(yīng)的app進(jìn)程

根據(jù)pid 和錯(cuò)誤代碼 在終端進(jìn)程查看sudo malloc_history 19464 0x7f979d4c48c0
找到最后執(zhí)行的代碼進(jìn)行相應(yīng)的修改就可以了
0x7f979d4c48c0:為xcode開(kāi)啟僵尸對(duì)象定位時(shí)輸出的錯(cuò)位代碼

最終定位在-[FeatureCollectionController tapToOtherVC]
我在FeatureCollectionController控制器的tapToOtherVC方法里使用了DisclaimerViewController!對(duì)其進(jìn)行相應(yīng)的修改就可以了!
感謝您的閱讀,希望對(duì)您有所幫助!歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處,尊重他人勞動(dòng)!