1. 程式人生 > >[iOS]使用symbolicatecrash分析crash檔案

[iOS]使用symbolicatecrash分析crash檔案

  對於我們iOS開發者來說,最心碎的事莫過於蘋果稽核一個星期後上架app store,而第二天就報出閃退bug。一週前我剛經歷過,而且最坑的是由於第一次做個人開發,經驗不足,沒有整合友盟的分析SDK,還好有幾個好心同事下載了,然後果然有兩臺機器上出現了閃退。真是天無絕人之路,最重要的crash檔案有了。下面我就來詳細描述一下具體的心路歷程以及分析方法。

  iOS app的所有崩潰記錄都會記錄在裝置上,所以對於和我一樣沒有整合讓使用者傳送崩潰報告功能的iOS開發者來說,要獲得crash檔案就必須先連上崩潰過的機器,然後開啟Xcode,選擇Window -> Devices(如果是Xcode6以下,則是Window -> Organizer -> Devices),選擇你自己的機器,然後點選View Device Logs,這時候會開啟一個小視窗,這就是你機器上至目前為止存的所有app的崩潰資訊了。如果是好久沒看過這個資訊,開啟後還要讀取好久才能完全讀完,總之,找到你的app最後一次崩潰記錄,右鍵匯出。(先不要在意下圖的資訊,我只是隨便找了一個)

我們先看一眼匯出來的.crash檔案,上半部分都是一些基本資訊(基本沒用),重點看下崩潰部分的記錄,如下圖(是下圖,不是上圖!)

看紅框裡的,隱隱有種不翔的預感,很像是陣列越界之類的問題啊,可下邊幾行寫的都是啥,這怎麼定位問題啊。先不管了,先在桌面上建個資料夾,就叫crash吧,然後把這個匯出的.crash檔案扔進去。想要再詳細點的記錄還缺幾樣東西呢。。。

  找到你上次釋出的ipa(如果實在沒有了就再從Archives裡匯出來一個,但一定要保證是你上次釋出用的那個),右鍵 -> 開啟方式 -> 歸檔實用工具(就是解壓縮),然後把Payload資料夾下的.app檔案也扔到剛剛的crash資料夾裡。

  接下來還需要dSYM檔案,還是在Archives裡,找到釋出用的那個,右鍵Show in Finder,如圖

然後對資料夾中的這個.xcarchive檔案右鍵,顯示包內容,就可以看到一個名為dSYMs的資料夾,把裡面的.dSYM檔案拷出來,還是放到桌面的crash資料夾裡。好了,還剩一個重頭了,就是標題上說的symbolicatecrash工具。

  symbolicatecrash是一個隱藏工具,它在我的Mac中的具體路徑如下(Xcode6.1.app請換成你的Xcode名稱)

/Applications/Xcode6.1.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash

你也可以在終端中輸入命令搜尋:

find /Applications/Xcode6.1.app -name symbolicatecrash -type f

把這個路徑拷貝一下,然後粘到Finder的“前往資料夾”下,前往,就可以看到symbolicatecrash工具了,現在把它也拷到桌面的crash資料夾裡。至此,crash資料夾裡現在有4個檔案了,分別是.app, .crash, .dSYM, symbolicatecrash。接下來就是用終端敲命令,生成更易分析的crash。

  首先用cd命令進入到crash資料夾下,然後輸入以下命令

./symbolicatecrash /Users/xxxx/Desktop/crash/InOrder.crash /Users/xxxx/Desktop/crash/InOrder.app.dSYM > Control_symbol.crash

上述命令中,"xxxx"和"InOrder"請自行替換成對應的名稱。執行,這時候終端可能會報錯Error: "DEVELOPER_DIR" is not defined at /usr/local/bin/symbolicatecrash line 53. 這時候在終端中再輸入如下(Xcode6.1.app依然是要替換成實際名稱)

export DEVELOPER_DIR="/Applications/Xcode6.1.app/Contents/Developer"

然後再跑一下剛剛的那個命令,這時候看一下桌面的crash資料夾下就會多出一個名為“Control_symbol.crash”的檔案,這就是可定位問題的crash檔案了,我們開啟看一下。

現在紅框裡原來的那些亂七八糟的東西已經“翻譯”成了崩潰在具體的哪一個.m檔案的哪一行。下面就是進行合理的猜想和除錯了,比如我的崩潰就是因為這個第三方時間選擇控制元件使用擷取字串的形式來獲得時間,像09:23 PM就被固定的拆成了時、分、上下午標識3段,結果使用者使用24小時制的時候,時間就成了21:23,沒了上下午標識,array[2]超出下標妥妥的閃退。想想我腦洞也是蠻大的,這種問題原因都被猜到了。。。

  如果還有哪裡寫得不明白的可以在下邊評論中回覆~~

相關推薦

[iOS]使用symbolicatecrash分析crash檔案

  對於我們iOS開發者來說,最心碎的事莫過於蘋果稽核一個星期後上架app store,而第二天就報出閃退bug。一週前我剛經歷過,而且最坑的是由於第一次做個人開發,經驗不足,沒有整合友盟的分析SDK,還好有幾個好心同事下載了,然後果然有兩臺機器上出現了閃退。真是天無絕人之路,最重要的crash檔案有了。下面

iOS 應用程式 Crash檔案的理解與分析

Understanding and Analyzing iOS Application Crash Reports https://developer.apple.com/library/ios/technotes/tn2151/_index.html Technica

Qt5 for mac 分析crash檔案

開發環境:MacOS: 10.13.6      Qt:   Qt5.9.7 for Mac  要在MacOS平臺下分析QT5的崩潰檔案,必須依賴* .dSYM符號檔案,而在MacOS平臺下生成dSYM檔案,之前一直

Xcode自帶工具symbolicatecrash解析iOS Crash檔案

一、找到.app檔案和.app.dSYM檔案 在桌面建立一個crash資料夾,然後Xcode->Window->Organizer找到Archives找到App->右擊Show in Finder 複製.app和.app.dSYM到crash夾檔案:右擊.xc

圖形化還原崩潰地址 iOScrash檔案分析

沒有不會crash的app包括微信 沒有不會crash的程式碼即使正常執行千年 只要有會看crash的程式猿 這一週是在不同的crash日誌分析中度過的,公司的4個專案依次出現不同程式的隨機崩潰。並且出現了非常多的靈異事件,即使看到了現象程式猿(!_! ME)也很難相信這

iOS通過dSYM檔案分析crash日誌

iOS通過dSYM檔案分析crash日誌 平常在開發的過程中,遇到到了Crash可以很容易的通過Xcode去定位Crash的位置,但是當我們的App釋出以後,遇到閃退就不可以通過Xcode去除錯了。當然現在也有很多產品可以線上分析,例如騰訊的bugly與友盟的錯誤分析。這些分析工具的最基本的地方還是

分析iOS Crash檔案的3種方法

crash檔案例子 crash檔案的部分內容: Last Exception Backtrace: 0 CoreFoundation 0x30acaf46 exceptionPreprocess + 126 1 libobjc.A.dylib 0x3af0b

iOS開發:第一個iOS程式分析——AppDelegate.h檔案和檢視View、檢視控制器ViewController

在上一篇文章iOS開發:第一個iOS程式分析——代理,生命週期函式中主要介紹了iOS使用Objective-C開發的兩個主要檔案main.m和AppDelegate.m和控制程式生命週期的函式,接下來將介紹另外兩個檔案:AppDelegate.h檔案、UIViewController.m檔案和i

iOS .Crash檔案符號化

原文地址:https://www.jianshu.com/p/3caccc287346 如果大家是用真機在除錯的過程中出現了Crash,那麼請看iOS除錯之 crash log分析 前言 導讀:Understanding and Analyzing Appl

iOS--上線被拒如何從蘋果返回的崩潰日誌iOS.crash檔案處理找崩點(看這篇就懂了)

2017年底了,現在蘋果上線的越來越嚴,導致被拒的次數也是越來越特多。我們從蘋果給的提示可以看出我們大概崩潰的位置,但是作為程式設計師的我們,找到具體崩潰的點才能更好的修復。 AppStore稽核沒有通過,給了3個crashLog.txt檔案,可是開啟後都是十六進位制的東東(根本不知道

使用Symbolicatecrash和xcrun atos分析crash log

https://blog.csdn.net/mkhgg/article/details/17247673 如果是完整的*.crash log,就使用Symbolicatecrash來解析, 使用方法: 1. 找到Symbolicatecrash檔案 Xcode 5.0的之後 /App

iOS開發之Crash日誌獲取與分析

當在非除錯狀態下,我們用真機測試app,crash或者說閃退是一件很常見的事,最讓我們開發人員頭疼的是,自己在開發過程中總是不會遇到crash,安裝到別人的裝置,就出現了閃退崩潰現象。這種偶現的、概率比較低的閃退是最令人頭疼。 這時iOS crash log 

iOS開發:dSYM檔案分析

       專案開發過程中,使用了友盟統計,就能在友盟給出的錯誤資訊統計中,能比較方便的找出客戶端異常的資訊,但是很多像陣列越界卻只給出了 *** -[__NSArrayM objectAtIndex:]: index 50 beyond bounds [0 .. 39]

遭遇Crash檔案戰:教你如何搞定iOS崩潰日誌

請叫我背景 最近在提交應用到App Store的時候,竟然被拒了兩次。那時候心裡的想法是,尼瑪完蛋了,要被老闆開除了,我是不是要失業了。於是乎那兩週幾乎毛腦子都是為什麼Apple你這麼狠心,我們明明相愛了那麼多年,你竟然就這樣拋棄了我。我不想活了,不要攔著我,我要分分

iOS使用 xcconfig配置檔案的若干坑

有一些文章介紹.xconfig檔案的使用,如這篇,但是經過親自實踐,發現還是有一些坑,這裡記錄下。 構建新的configuration 這一步在“project-info-configuration”位置進行,點選“+”構建“-”消除,沒什麼問題,這個很簡單也不會出錯。 只是原來使用xc

Android NDK中結合彙編分析Crash行為

1. Crash後 logcat中輸出綠色資訊: 05-02 10:14:37.130: I/DEBUG(1890): backtrace: 05-02 10:14:37.130: I/DEBUG(1890): #00 pc 00033fda /data/data/com.

iOS獲取App快取檔案的大小並清除快取

App在處理網路資源時,一般都會做離線快取處理,其中最典型離線快取框架為SDWebImage。 但是,離線快取會佔用一定的儲存空間,所以快取清理功能基本成為資訊、購物、閱讀類app的標配功能。 下面用程式碼來分別介紹快取檔案大小的獲取及清除快取

iOS 通過iTunes共享檔案獲取手機沙盒Document目錄

iOS 系統提供了檔案共享支援 當手機通過資料線連線到 Mac 的 iTunes 時, 可以在 iTunes 將電腦上的檔案傳輸到 App 的沙盒目錄當中. 為 App 新增離線資料. 也可以將 App 沙盒目錄下儲存的檔案通過 iTunes 匯出到電腦當中. 使用方式: 其實開發當中需

iOS Git建立gitignore檔案, gitignore 不起作用解決辦法

1.建立gitignore檔案 開啟終端, cd 進入到專案所在目錄,輸入touch gitignore即可, 然後編輯 gitignore, 編輯成功之後, mv gitignore .gitignore換名字, 這個時候.gitignore檔案會自動消失, 點檔案不能顯示的. 在該資料夾下打

從SpringBoot原始碼分析 配置檔案的載入原理和優先順序

從SpringBoot原始碼分析 配置檔案的載入原理和優先順序 本文從SpringBoot原始碼分析 配置檔案的載入原理和配置檔案的優先順序     跟入原始碼之前,先提一個問題:   SpringBoot 既可以載入指定目錄下的配置檔案獲取配置項,也可