簡體   English   中英

如何在iOS中使用dSYM文件解碼崩潰日志?

[英]How to decode a Crash log using dSYM file in iOS?

我的iOS應用程序崩潰了。 我想用dSYM文件讀取崩潰日志。 這怎么可能?

首先,您需要三個文件:dSYM文件,應用程序文件和崩潰日志。

打開X代碼,在項目導航器中顯示Products文件夾,並在“查找器中顯示”應用程序文件。 在這里你也可以找到dSYM文件。 將它們復制到一個文件夾。

現在打開終端,然后導航到之前復制的兩個文件的文件夾。 運行: dwarfdump --uuid Application_name.app/Application_name您應該收到應用程序的UUID。 運行以下命令: dwarfdump --uuid Application_name.app.dSYM - 您將再次收到UUID,該UUID應與先前收到的UUID匹配。

打開崩潰日志(X代碼 - 管理器 - 崩潰),找到出現“二進制圖像”標題的行。 這是第一行中的另一個UUID,它應該與先前在終端中接收的UUID再次匹配。

現在,您確信崩潰已記錄在您正在檢查的構建中,因此請再次打開崩潰日志文件,找到Thread 0部分,並且應該有兩行包含您的應用程序名稱和兩個地址。 如:

Application_name 0x123456
Application_name 0x987654

在終端你應該現在運行: atos -arch armv7 -o address1 address2 (地址1和地址2應該用前兩個地址替換,armv7用你的系統替換 - 它顯示在你獲得UUID的行上) 。

快樂的調試!

編輯:我想提到這篇帖子作為我的基礎。

實際上,您無法解碼dSYM文件,但從中獲取錯誤詳細信息1.從日志文件中找到崩潰線程和地址:以下是0x0nnn 2.從日志文件中查找本機代碼類型:以下是arm64
3.找到dSYM文件(符號文件),從.xcarchive中提取:以下是xx.app.dSYM

dwarfdump --lookup 0x0nnn --arch=[arm64 armv6 armv7] xx.app.dSYM

靈感

https://developer.apple.com/library/archive/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATEWITHXCODE

獲取dsym文件的步驟

  • 為Archive創建iOS應用程序
  • 解壓縮MyApp.xcarchive
  • 在該文件中,您將找到您的dSYM文件。

獲取設備崩潰日志

從設備中拉出.crash文件。 我通常使用xCode。

逐行方法

atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc

0x1000e4000 = address of your app's image
0x00000001000effdc = is the stripped name of the symbol you want to turn into a readable name

親方法

獲取symbolicatecrash可執行文件的位置。

在xCode 9中,您需要的文件位於:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

將符號化的崩潰日志打印到終端

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

./symbolicatecrash -v crash_log_20_9_2018.crash myapp.app.dSYM

這里有很好的atos說明: 如何象征崩潰日志Xcode?

在沒有dsym文件的情況下執行相同的方法: https ://medium.com/@Mrugraj/crash-re-symbolication-5c28d3a3a883

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM