iOS_crash文件的獲取及符號化(解析)

文章目錄

  • 1. 使用 symbolicatecrash 解析 .ips 文件:
  • 2. 使用 CrashSymbolicator.py 解析 ips 文件
  • 3. 使用 atos 解析 crash 文件
  • 4. Helps
    • 4.1 .ips 文件獲取
    • 4.2 .crash 文件獲取
    • 4.3 獲取 .dSYM 和 .app 文件
    • 4.4 使用 dwarfdump 查詢 uuid
  • 5. Tips
  • 6. 總結


1. 使用 symbolicatecrash 解析 .ips 文件:

symbolicatecrashXcode自帶的crash日志分析工具

步驟1. 找到symbolicatecrash,打開Terminal執行:

find /Applications/Xcode.app -name symbolicatecrash -type f

稍等一會,就會輸出路徑,然后將路徑復制,右鍵 Finder -> 前往文件夾 -> 粘貼 -> 回車,就能找到symbolicatecrash,將symbolicatecrash拷貝出來備用

步驟2. 將./symbolicatecrashcrashdSYM文件放在同一文件夾里

步驟3. 執行解析命令

./symbolicatecrash 《crash文件絕對路徑》 《拖入xx.app.dSYM里的xx文件》 > log.crash 回車

可能會報錯:

錯誤1:Error: "DEVELOPER_DIR" is not defined at /Users/yourname/Downloads/crash/symbolicatecrash line 69.
解決:執行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer后重試


錯誤2:No crash report version in /xxx.crash at ./symbolicatecrash line 1365.
原因:Apple 在 Xcode13.3 已經廢棄了symbolicatecrash
解決:如果需要使用,需要將.ips轉化為之前的格式。可以使用 AppleCrashScripts 進行轉化
步驟:

  1. 下載AppleCrashScripts項目,進入到項目目錄下
  2. .ips 文件復制到AppleCrashScripts-master文件夾下:
  3. 執行:
swift convertFromJSON.swift -i xxx.ips -o log.crash

生成的log.crash就是舊格式的文件了,再用 ./symbolicatecrash 進行解析。


2. 使用 CrashSymbolicator.py 解析 ips 文件

步驟1. 找到CrashSymbolicator.py文件,
find /Applications/Xcode.app -name CrashSymbolicator.py -type f
結果:
/Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py

步驟2. 使用CrashSymbolicator.py.dSYM.ips文件進行解析

python3 《CrashSymbolicator.p文件路徑》 -d xxx.dSYM -p xxx.ips

運行結果會直接顯示在terminal里,需要的可以復制出來保存一下。

步驟3. 分析

...
"queue": "com.apple.main-thread",
"frames": [{"imageOffset": 117622764,"imageIndex": 0,"symbol": "__57-[QNBUALiveFeedCategoryChannelViewController viewDidLoad]_block_invoke","sourceFile": "QNBUALiveFeedCategoryChannelViewController.m","sourceLine": 80,"symbolLocation": 32},...]
...

找到了崩潰時主線程正在執行的代碼,invoke了一個空的block


3. 使用 atos 解析 crash 文件

命令格式:

atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate>

即:atos [-o dSYM] -l loadAddress Address1 Address2 Address3
操作:

atos -arch arm64 -o 《拖入xxx.app.dSYM里的xxx文件》 -l 《基地址》《偏移后的地址》

Tips: xxx 為項目名

如1:
atos -arch arm64 -o ~/xxx.app.dSYM/Contents/Resources/DWARF/xxx 0x10b3e47ec 0x1043b8000
atos -arch arm64 -o ~/xxx.app.dSYM/Contents/Resources/DWARF/xxx 0x104885ec0 0x1043b8000-[TTAttributedLabel encodeWithCoder:] (in xxx) (TTAttributedLabel.m:1534)
-[QNBUAPosterVerticalPaddingPicViewModel posterBackgroundOperation] (in xxx) (QNBUAPosterVerticalPaddingPicViewModel.m:115)

4. Helps

4.1 .ips 文件獲取

  1. 設備 -> 設置 -> 隱私與安全性 -> 分析與改進 -> 分析數據 -> (對應app名+時間點)
  2. TestFlight 的可以在 iTunes Connect 獲取到崩潰日志
    iTunes Connect -> Manage Your Applications -> 對應app -> View Detail -> Crash Reports (已符號化)
  3. Xcode -> Window -> Origanizer -> Crash 獲取 (需登錄開發者賬號)
    需要用戶共享分享,才能獲取到他的崩潰日志
    官方提供的崩潰信息不是實時的,只能查看兩天前的崩潰信息,需要試試可以使用第三方工具

4.2 .crash 文件獲取

設備連接電腦 XCode -> Windows -> Device and Simulator -> View Device Logs -> (對應app名+時間點) -> 右鍵 Export Log

4.3 獲取 .dSYM 和 .app 文件

.dSYM是十六進制函數地址映射信息的中轉文件,調試的symbols會包含在這個文件中,symbols即類名、函數名等。

  1. Archives打包時,應該保存每個正式版的dSYMapp文件,以備定位線上問題使用

Window -> Organizer -> Archives -> 右鍵(需要的包) -> Show in Finder -> 右鍵 .xcarchive 顯示包內容

Tips:Archives包文件路徑為:~/Library/Developer/Xcode/Archives

  1. debug模式獲取

修改設置:Xcode -> Targets -> Build Setting
2.1:Debug Infomation Format -> DWARF -> DWARF with dSYM File
2.2:Generate Debug Symbols -> YES
用真機編譯就能生成.dSYM.app文件了,在項目工程的Products文件夾里,右鍵 xxx.app 文件 -> Show in Finder -> 就能找到

4.4 使用 dwarfdump 查詢 uuid

查詢.dSYMuuid,確保跟.ips.crash文件的uuid一致

dwarfdump -u <dSYM所在文件路徑>

5. Tips

  • Tips1: Apple deprecated symbolicatecrash at Xcode13.3, use atos instead
  • Tips2: 有些app有很多dSYM文件,需要把所有dSYM文件都拷貝到待解析文件同一文件夾下
  • Tips3: simulator不會生成crash文件
  • Tips4: XCode設置生成dSYM文件,并跑到真機上,此時app產生的.ips文件會自動符號化

6. 總結

  • CrashSymbolicator.py解析結果顯示在 Terminal 里,且 沒有保持原來的堆棧格式
  • atos效率好低,需要按地址解析
  • symbolicatecrash被廢棄了,但文件進過轉換還能用,且會解析一整個文件,還保留原來的堆棧格式(推薦使用)

參考:
Diagnosing issues using crash reports and device logs
Acquiring crash reports and diagnostic logs
Understanding Crashes and Crash Logs
iOS Debugging Magic
iOS Crash 分析攻略

本文的描述很難不摻雜作者的主觀意見,如果對文章中的內容有疑問,歡迎評論區提出不同的意見進行討論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39462.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一百五十七、Kettle——Kettle最新的官網下載地址(之前的Kettle官網已經無法下載,真坑)

一、目的 之前使用的是kettle8.2&#xff0c;不需要額外下載pentaho-hadoop-shims-hdp30-8.2.2018.11.00-342.jar&#xff0c;因為kettle8.2本身自帶 但是kettle8.2在Linux上安裝后建立共享資源庫又有問題&#xff0c;沒辦法&#xff0c;只能換成kettle9.3 結果&#xff0c;k…

華為網絡篇 RIPv2的基礎配置-25

難度 1復雜度1 目錄 一、實驗原理 1.1 RIP的版本 1.2 RIP的路由更新方式 1.3 RIP的計時器 1.4 RIP的防環機制 二、實驗拓撲 三、實驗步驟 四、實驗過程 總結 一、實驗原理 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息協議&#xff09;&am…

微服務概述-7

Shiro 框架 Shiro 是一個用于 Java 應用程序的安全框架。它提供了身份驗證、授權、加密和會話管理等功能&#xff0c;可以幫助開發人員構建安全可靠的應用程序。 Java 中針對權限管理常見的有 2 個著名的框架&#xff1a;spring security 和 shiro shiro 基本概念 credentia…

機器學習筆記 - 基于C++的??深度學習 二、實現卷積運算

一、卷積 卷積是信號處理領域的老朋友。最初的定義如下 在機器學習術語中: I(…)通常稱為輸入 K(…)作為內核,并且 F(…)作為給定K的I(x)的特征圖。 慮多維離散域,我們可以將積分轉換為以下求和 對于二維數字圖像,我們可以將其重寫為: <

編程練習(1)

目錄 一.選擇題 第一題&#xff1a; 第二題&#xff1a; 第三題&#xff1a; 第四題&#xff1a; 第五題&#xff1a; ?編輯 二.編程題 第一題&#xff1a; 第二題&#xff1a; 1.暴力方法&#xff1a; 2.數組法&#xff1a; 一.選擇題 第一題&#xff1a; 解析&…

【vue】簡潔優雅的火花線、趨勢線

來由 在github發現個好看易用的vue趨勢線組件&#xff0c;特此記錄。 效果 趨勢圖生成后效果如上&#xff0c;線條為漸變色&#xff0c;可設置是否平滑。具體線條走勢&#xff0c;根據數據動態生成。 使用 安裝 npm i vuetrend -S 引入 import Vue from "vue"…

MySQL性能分析之慢查詢日志查看

一、背景 MySQL的慢查詢日志是MySQL提供的一種日志記錄,他用來記錄在MySQL中響應的時間超過閾值的語句,具體指運行時間超過long_query_time(默認是10秒)值的SQL,會被記錄到慢查詢日志中。 慢查詢日志一般用于性能分析時開啟,收集慢SQL然后通過explain進行全面分析,一…

時序預測 | MATLAB實現WOA-CNN-BiLSTM鯨魚算法優化卷積雙向長短期記憶神經網絡時間序列預測

時序預測 | MATLAB實現WOA-CNN-BiLSTM鯨魚算法優化卷積雙向長短期記憶神經網絡時間序列預測 目錄 時序預測 | MATLAB實現WOA-CNN-BiLSTM鯨魚算法優化卷積雙向長短期記憶神經網絡時間序列預測預測效果基本介紹程序設計學習總結參考資料 預測效果 基本介紹 時序預測 | MATLAB實現…

Python案例|Pandas正則表達式

字符串的處理在數據清洗中占比很大。也就是說,很多不規則的數據處理都是在對字符串進行處理。Excel提供了拆分、提取、查找和替換等對字符串處理的技術。在Pandas中同樣提供了這些功能,并且在Pandas中還有正則表達式技術的加持,讓其字符串處理能力更加強大。 01、正則 正則就是…

TypeScript相關面試題

typeScript 1.什么是TypeScript?是什么&#xff1f;特性&#xff1f;區別&#xff1f; 2.TypeScript數據類型&#xff1f;3.說說你對 TypeScript 中枚舉類型的理解&#xff1f;應用場景&#xff1f;4.說說你對 TypeScript 中接口的理解&#xff1f;應用場景&#xff1f;使用方…

docker中的jenkins之流水線構建

docker中的jenkins之流水線構建項目 1、用node這種方式&#xff08;因為我用pipeline方式一直不執行&#xff0c;不知道為什么&#xff09; 2、創建項目 創建兩個參數&#xff0c;一個是宿主端口號&#xff0c;一個是docker中的端口號 3、使用git項目中的Jenkinsfile 4、編寫…

【AGI】世界首次實現室溫超導LK-99

論文&#xff1a;The First Room-Temperature Ambient-Pressure Superconductor GPT論文總結&#xff1a; 根據所提供的信息&#xff0c;這篇論文報道了一種在室溫和常壓下工作的室溫超導體LK-99。LK-99的超導性是通過微小的結構畸變引起的&#xff0c;而不是通過溫度和壓力等外…

09 - 連續的多個commit整理成1個

查看所有文章鏈接&#xff1a;&#xff08;更新中&#xff09;GIT常用場景- 目錄 文章目錄 將連續的多個commit整理成1個 將連續的多個commit整理成1個 將anranxiaohunzhang和xianglongshibazhang合并起來&#xff08;將anranxiaohunzhang合并到降龍十八掌上&#xff0c;生成新…

java GC日志分析示例

分析 Java 的 GC 日志可以幫助您了解應用程序的垃圾回收情況&#xff0c;從而檢測內存泄漏、性能問題以及優化內存使用。下面是一些詳細的步驟和示例來分析 Java 的 GC 日志。 假設您有一個 Java 應用程序運行的 GC 日志文件&#xff0c;我們將使用以下示例日志進行解釋&#…

干翻Dubbo系列第十篇:Dubbo體系中ProtoBuf序列化方式詳解

文章說明 本文內容整理自《孫哥說Dubbo系列視頻課程》&#xff0c;孫帥老師課程細致、全面、深入、性價比極高。B站搜孫帥suns可以找到對應的試聽視頻&#xff0c;或者直接添加老師微信號suns45與他直接聯系 一&#xff1a;序列化概念 補充說明&#xff1a; Kyro和Fst這兩種…

設計模式-面試常問

1.單例模式 保證系統中&#xff0c;一個類&#xff0c;只有一個實例&#xff0c;并且提供對外訪問。 優點&#xff1a;只有一個對象&#xff0c;可以節省資源。適合頻繁創建銷毀對象的場景。 實現&#xff1a;要用到static&#xff0c;靜態私有對象。暴露單例的靜態方法。 &…

docker 學習--03 環境安裝(本人使用的win10 Linux也是在win10下模擬)

docker 學習–03 環境安裝&#xff08;本人使用的win10 Linux也是在win10下模擬&#xff09; docker 學習-- 01 基礎知識 docker 學習-- 02 常用命令 文章目錄 docker 學習--03 環境安裝&#xff08;本人使用的win10 Linux也是在win10下模擬&#xff09;[TOC](文章目錄) 1. wi…

【數學建模】邏輯回歸算法(Logistic Resgression)

邏輯回歸算法 簡介邏輯回歸與條件概率繪制sigmoid函數 簡介 邏輯回歸算法是一種簡單但功能強大的二元線性分類算法。需要注意的是&#xff0c;盡管"邏輯回歸"名字帶有“回歸”二字&#xff0c;但邏輯回歸是一個分類算法&#xff0c;而不是回歸算法。 我認為&#xff…

冉冉升起的星火,再度升級迎來2.0時代!

文章目錄 前言權威性評測結果 星火大模型多模態功能插件功能簡歷生成文檔問答PPT生成 代碼能力 福利 前言 前幾天從技術群里看到大家都在談論《人工智能大模型體驗報告2.0》里邊的內容&#xff0c;抱著好奇和學習的態度把報告看了一遍。看完之后瞬間被里邊提到的科大訊飛的星火…

2008-2020年全國各省綠色金融發展指數(含原始數據)

2008-2020年全國各省綠色金融發展指數&#xff08;含原始數據&#xff09; 1、時間&#xff1a;2008-2020年 2、范圍&#xff1a;30個省市 不含西藏 3、來源&#xff1a;原始數據整理自csmar、eps、wind等數據庫 4、原始數據指標&#xff1a; A股上市環保企業新增銀行貸款…