當前位置:成語大全網 - 新華字典 - iOSCrash log分析

iOSCrash log分析

作為壹名應用開發者,相信妳經常碰到以下情景:

在妳將應用提交到App Store之前,想必妳已經做了大量的測試工作,在妳的設備上它也運行的很好,然而,還是會出現使用時閃退的情況。相信大家已經做好了Crash log的收集工作。

Crash log主要分為兩種情況:

1.連接真機進行調試

2.App Store上應用的Bug追蹤

本文主要講的是App Store上bug的分析。

上圖正是Apple給的崩潰日誌,下面我們逐步分析壹下日誌的內容。

1.進程信息

Incident Identifier :crash的id

CrashReporter Key :crash的設備id

Hardware Model :手機型號

Process :[app名字] [進程ID]

Path :app的位置

Identifier :bundle ID

Version :版本號

AppStoreTools

Code Type :arm64

Role :app處於前臺

Parent Process

Coalition

2.基本信息

Date/Time :crash發生時間

Launch Time :app啟動時間

OS Version :iOS版本

Release Type

Baseband Version

Report Version

3.異常信息

Exception Type :異常類型

Exception Codes :異常地址

Exception Note :描述

Triggered by Thread :異常發生的線程

4.異常回溯

發生異常時的線程堆棧

在分析之前需要準備 dSYM 文件, crash log 和 symbolicatecrash (Xcode自帶的崩潰分析工具)。

什麽是dSYM文件?

Xcode編譯項目後,我們會看到壹個同名的 dSYM 文件,dSYM 是保存 16 進制函數地址映射信息的中轉文件,我們調試的 symbols 都會包含在這個文件中,並且每次編譯項目的時候都會生成壹個新的 dSYM 文件,位於 /Users/用戶名 /Library/Developer/Xcode/Archives 目錄下,對於每壹個發布版本我們都很有必要保存對應的 Archives 文件

dSYM文件作用

我們可以通過crash log中出錯的函數地址去查詢 dSYM 文件中程序對應的函數名和文件名

1.在桌面新建壹個文件夾 crashtemp

找到"symbolicatecrash" 文件, 拷貝到剛才創建的 "crashtemp" 文件夾裏。

3. Xcode->Window->Organizer->Archives 顯示包內容 獲取dSYM文件拷貝到剛才創建的 "crashtemp" 文件夾裏。

4.crash log文件拷貝到 crashtemp 裏。

5.打開終端進入 crashtemp 文件夾:

6.檢驗crash、dSYM文件是否匹配

每壹個xx.app.dSYM 文件都有對應的 UUID,crash 文件也有自己的 UUID,只要這三個文件的 UUID 壹致,我們就可以通過他們解析出正確的錯誤函數信息了。

在 terminal 中輸入以下命令,查看UUID:

7.輸入以下命令

這時候終端將會進行處理......

生成壹個新的文件 symbol.crash ,這就是我們認識的crash文件。

有時候通過 symbolicatecrash 並不能解析出來崩潰信息,或者APP自身的堆棧能解析出來,但是系統的堆棧解析不出來。

可以通過 atos 命令逐行解析,通過這個命令可以解析指定的某壹行堆棧。