最近在用百度地圖SDK做定位功能活尊,遇到了一個會crash的bug。經過長時間的調試唆缴,終于確定并解決了問題扑馁。以下是這次問題總結的一些比較重要的東西涯呻。
- 遇到了EXC_BREAKPOINT(code = 1,subcode = ...)這樣的崩潰斷點凉驻,首先應該啟用僵尸模式查找具體崩潰原因。
- 當僵尸模式查找不到的時候复罐,應該可以確定是靜態(tài)庫內部出現的崩潰涝登。這時候就要仔細查看自己的代碼,找到使用第三方庫不當的地方效诅。(最好在剛開始使用的時候多讀官方文檔和官方demo胀滚,避免出現這種錯誤。)
- 由于鷹眼的開始和停止上傳位置的方法都是在新開的線程中執(zhí)行的填帽,我這里就是遇到了兩個方法同時執(zhí)行,導致開始方法的內部調用了已經被停止方法釋放的對象咙好。所以出現了崩潰篡腌。
- 發(fā)生崩潰的操作時,應該是只調用開始上傳的方法的勾效。所以就通過打斷點的方式找到調用了stop的代碼嘹悼。
- 然后發(fā)現是在監(jiān)控程序進入后臺的方法中調用的。這時候問題又來了:這個方法是通過通知中心監(jiān)控home鍵掛起程序時調用的层宫,為什么每次進入界面都會調用這個方法呢杨伙?
- 最后確定,是在詢問定位權限的時候萌腿,系統也發(fā)送了一個程序掛起的通知限匣。