iOS友盟崩潰地址解析 通過dSYM檔案分析定位線上 APP crash問題
有很多問題是在開發測試過程中無法遇到和重現的,這就需要統計線上的崩潰資訊進行定位。
什麼是 dSYM
Xcode編譯專案後,我們會看到一個同名的 dSYM 檔案,dSYM 是儲存 16 進位制函式地址對映資訊的中轉檔案,我們除錯的 symbols 都會包含在這個檔案中,並且每次編譯專案的時候都會生成一個新的 dSYM 檔案,位於 /Users/<使用者名稱>/Library/Developer/Xcode/Archives 目錄下,對於每一個釋出版本我們都很有必要儲存對應的 Archives 檔案
當我們軟體 release 模式打包或上線後,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯誤,這個時候我們就需要分析 crash report 檔案了,iOS 裝置中會有日誌檔案儲存我們每個應用出錯的函式記憶體地址,通過 Xcode 的 Organizer 可以將 iOS 裝置中的 DeviceLog 匯出成 crash 檔案,這個時候我們就可以通過出錯的函式地址去查詢 dSYM 檔案中程式對應的函式名和檔名。大前提是我們需要有軟體版本對應的 dSYM 檔案,這也是為什麼我們很有必要儲存每個釋出版本的 Archives 檔案了。
友盟的崩潰資訊跟蹤
友盟的使用比較簡單,因為崩潰資訊中有提示的命令,前提是上線時是你本機的 Xcode 進行的上傳或匯出工作,因為這樣才會有dSYM檔案。
首先開啟友盟的崩潰統計,找到要定位的 bug,點選綠色的記憶體地址,就會彈出一個彈框,拷貝彈框中的命令
然後開啟Mac命令列, 將拷貝的命令貼上進去,按 return 鍵執行,如果解析成功的話,就會列印出崩潰資訊了,方法、檔案、行數等。
其他崩潰統計或不是自己打包
如果使用的是其他的崩潰統計服務或者當時並不是自己打包的,只有崩潰資訊的記憶體地址,可以使用下面的辦法。
首先,找到當時archive的.xcarchive檔案。
如果是本機進行的archive,那麼在
/Users/username/Library/Developer/Xcode/Archives
目錄下會找到所有的archive檔案,該目錄是預設的存放目錄,如果這是公司的辦公本,並且你沒有在該目錄下找到最近的檔案,則有可能是 Xcode 的設定被更改了。
開啟 Xcode 首選項,選擇最右側的 locations,就可以看到 Xcode 的相關檔案存放路徑,點選箭頭即可開啟檔案位置。
如果並不是本機進行的 archive,那麼找到當時的電腦或則從同事那裡拷貝到archive也是可以的。
好的,archive檔案已經找到,下面就可以進行定位了。
右鍵archive檔案 選擇 顯示包內容,然後選擇 dSYMs 資料夾裡的.dSYM 檔案再次顯示包內容,然後會找到一個 DWARF 的資料夾,保持該 Finder 視窗開啟
第三步,開啟終端,先輸入 cd,然後選中將DWARF資料夾拖到終端視窗上,會看到 cd 後面自動加上了DWARF資料夾的路徑,按 return 鍵進入該目錄下
最後在終端裡輸入如下命令
atos -arch arm64 -o Xcode 專案名稱 記憶體地址
例如
atos -arch arm64 -o test-IOS 0x1001cb988
按 return 鍵執行就會列印出該記憶體地址的具體檔案、方法以及行數等資訊,找到崩潰的位置就知道可能的原因以及解決方法了!
相關文章
- 圖形化還原崩潰地址 iOS的crash檔案分析iOS
- iOS Crash不崩潰iOS
- 藉助友盟+U-APM找出uniapp移動端崩潰的問題APP
- 友盟崩潰日誌解析(2016.06.08)
- 手把手教你檢視和分析iOS的crash崩潰iOS
- iOS: Crash檔案解析(一)iOS
- 記一次線上崩潰問題的排查過程
- crash日誌符號化,以分析崩潰符號
- IOS 崩潰日誌分析iOS
- 不生成core檔案的記憶體越界快速定位方法/記憶體越界定位/地址崩潰定位方法記憶體
- 如何定位瀏覽器頁面崩潰的問題瀏覽器
- iOS10 許可權崩潰問題iOS
- iOS相關 | Xcode8 ---- iOS 9.2 崩潰問題iOSXCode
- 崩潰的一天,西安一碼通崩潰背後的技術問題。
- IOS 友盟iOS
- MySQL 崩潰恢復過程分析MySql
- APP防崩潰APP
- APP接入友盟統計,不上報資料問題APP
- ASR專案實戰-交付過程中遇到的核心崩潰問題
- 僅通過崩潰地址找出原始碼的出錯行 (11千字)原始碼
- iOS Autolayout 修改約束優先順序崩潰問題iOS
- Xcode8---ios9.2一下崩潰問題XCodeiOS
- ios 崩潰集錦iOS
- 使用 google_breakpad 分析 Electron 崩潰日誌檔案Go
- Crittercism:KitKat崩潰率0.7% iOS 7.1崩潰率1.6%iOS
- app 崩潰的原因APP
- json解析導致的崩潰問題 cocos2.* 底層問題JSON
- 通過SQLNET.ora檔案限制Ip地址訪問SQL
- iOS應用崩潰日誌.crash報告符號化/.dYSM符號表手動解析(Objective-C)iOS應用崩潰符號Object
- 記在Linux上定位後臺服務偶發崩潰的問題Linux
- iOS:專案中疑難Crash問題集錦iOS
- ios12升級, App應用崩潰閃退iOSAPP應用崩潰
- ios端app讀取iphone檔案(通過itunes實現)iOSAPPiPhone
- Flutter異常捕獲和Crash崩潰日誌收集Flutter
- 記一次Linux核心崩潰:kdump,crash,vmcoreLinux
- IOS原生接入友盟推送iOS
- iOS載入單張圖片導致崩潰的分析iOS
- Windows通過hosts檔案解析域名Windows