關於Hockey app 裡的Crash 分析

2021-09-24 17:54:38 字數 1522 閱讀 9054

首先上一張hockey裡的crash記錄

incident identifier:崩潰報告的唯一識別符號,不同的crash日誌該標示符也不同。

hardware model :代表發生crash的裝置型別。

date/time:發生crash的時間

os version:ios系統韌體版本

report version:日誌版本

exception type: 這個資訊非常重要,它就像是這個crash的名字。

crashed thread: 問題發生的thread

我一般都直接看最後的thread 然後找到對應的crash的thread

一般這個thread 後都會跟著crash。 然後從下往上是堆疊資訊,這裡左邊數字後跟著你們專案的target 說明是**裡的問題 如果是foundation 或者 其他的,可以忽略。找到最後你們target那一條目,然後後邊跟著的方法 以及類裡多少行,方便你去定位錯誤位置。

但是有些問題只看這裡,是解決不了的!

這時候就需要exception type 還有其他的地方來配合看了。

1. 首先有一些常見的exception code,  請自行檢視。

2.exception type

1)exc_bad_access

此型別的excpetion是我們最長碰到的crash,通常用於訪問了不改訪問的記憶體導致。一般exc_bad_access後面的"()"還會帶有補充資訊。

sigse**:通常由於重複釋放物件導致,這種型別在切換了arc以後應該已經很少見到了。

sigabrt:收到abort訊號退出,通常foundation庫中的容器為了保護狀態正常會做一些檢測,例如插入nil到陣列中等會遇到此類錯誤。

se**:(segmentation  violation),代表無效記憶體位址,比如空指標,未初始化指標,棧溢位等;

sigbus:匯流排錯誤,與 sigse** 不同的是,sigse** 訪問的是無效位址,而 sigbus 訪問的是有效位址,但匯流排訪問異常(如位址對齊問題)

sigill:嘗試執行非法的指令,可能不被識別或者沒有許可權

2)exc_bad_instruction

此類異常通常由於執行緒執行非法指令導致。

1.在**中修改了storyboard與outlet的對應關係,但是storyboard沒有更新時發生過此crash。

2.與第三方庫中方法衝突時發生過此crash。

3.呼叫系統方法時傳入了不恰當的指標型別。

3)exc_arithmetic

**中做除法時分母為零了會發生此問題。

x86的控制暫存器CR0,CR1,CR2,CR3

狀態和控制暫存器組除了eflags eip 還有四個32位的控制暫存器,它們是cr0,cr1,cr2和cr3。這幾個暫存器中儲存全域性性和任務無關的機器狀態。cr0中包含了6個預定義標誌,0位是保護允許位pe protedted enable 用於啟動保護模式,如果pe位置1,則保護模式啟動,如果p...

關於Servlet JSP裡 的用法

request.getrequestdispatcher a.jsp a href b.jsp ba a href b.jsp ba include file b.jsp 之所以會有這些不同,相信是由於jsp在轉為servlet後部分或全部脫離了應用程式的context,也就是說,jsp生成的ser...

關於IE裡的nextSibling

script varshq shq.cmenu function e script div id div1 onclick shq.cmenu event a href 特色 a div div id div2 div 系統環境 win8,ie11 過程描述 當點選 特色 時,div2的innerh...