1. 程式人生 > >iOS Crash 分析(文一)- 開始

iOS Crash 分析(文一)- 開始

1. 名詞解釋

1. UUID

一個字串,在iOS上每個可執行檔案或庫檔案都包含至少一個UUID。目的是為了唯一識別這個檔案。

2. dwarfdump

蘋果提供的命令列工具,其中一些功能就是檢視可執行檔案件或庫檔案的UUID

3. symbolicatecrash

一個蘋果提供的指令碼。可以將crash日誌符號化為可讀的堆疊資訊。

4. atosl

蘋果提供的命令列工具,可以將crash的base_address和load_address轉化為可讀的堆疊資訊。symbolicatecrash就是使用這個命令來做符號化的。

2.如何獲取Crash日誌

1.模擬器崩潰

模擬器崩潰後可以在“~/Library/Logs/DiagnosticReports/”下找到crash日誌。

2.真機崩潰

1.Xcode獲取日誌

手機和mac連線後,開啟Xcode選擇window進入Organizer(快捷方式是 Shift-CMD-2),在 Organizer 視窗上, 選中 Devices 標籤欄. 在左側的導航面板上,選中 Device Logs, 如下圖所示:

選擇對應裝置的Device Logs選單,就可以看到崩潰日誌。
開啟圖最上邊的Device Logs選單就可以看到mac曾經同步過的iOS裝置的崩潰日誌。

2.手動獲取日誌

日誌存放的路徑 ~/Library/Logs/CrashReporter/MobileDevice/DEVICE_NAME

DEVICE_NAME是你想要檢視的裝置。
下面是我的終端輸出的資訊:

➜  DiagnosticReports  pwd
/Users/zhuolaiqiang/Library/Logs/DiagnosticReports
➜  DiagnosticReports  ls
QQ_2014-05-30-132026_Anyhacker.crash            atosl_2014-06-04-151416_Anyhacker.crash         eclipse_2014-05-29-192522_Anyhacker.crash       eclipse_2014-06-02-145714_Anyhacker.crash
SogouInput_2014-05-29-151154_Anyhacker.crash    atosl_2014-06-04-151447_Anyhacker.crash         

3.符號化

1.利用Xcode符號化

app在真機裝置上Crash後,我們可以讓iOS裝置和mac連線,然後開啟Xcode選擇window進入Organizer(快捷方式是 Shift-CMD-2),在 Organizer 視窗上, 選中對應裝置的 Device Logs標籤,然後找到對應app日誌檔案,如圖所示:

這樣就可以看到已經符號化完畢的日誌。

2.利用symbolicatecrash指令碼符號化

symbolicatecrash是蘋果隨Xcode一起提供的專門用來做崩潰日誌符號化的指令碼工具(perl)。
symbolicatecrash存放路徑是
"/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash"。

使用方法是:
symbolicatecrash xx.crash xx.DSYM
xx.crash:需要符號化的崩潰日誌檔案
xx.DSYM:編譯APP時產生的DSYM檔案,此檔案可以不指定,symbolicatecrash會在硬碟內自動搜尋和匹配該檔案(前提是你的硬碟記憶體有這個檔案)

原文地址:http://blog.csdn.net/diyagoanyhacker/article/details/41247367

相關推薦

iOS Crash 分析- 開始

1. 名詞解釋 1. UUID 一個字串,在iOS上每個可執行檔案或庫檔案都包含至少一個UUID。目的是為了唯一識別這個檔案。 2. dwarfdump 蘋果提供的命令列工具,其中一些功能就是檢視可執行檔案件或庫檔案的UUID 3. symbolicatecra

Spring源碼分析bean的加載

tty matches 判斷 alias desc getc ntb 結合 步驟 摘要:本文結合《Spring源碼深度解析》來分析Spring 5.0.6版本的源代碼。若有描述錯誤之處,歡迎指正。 經過前面的分析,我們終於結束了對XML配置文件的解析,接下來將會面

osgEarth的Rex引擎原理分析如何根據earth檔案options建立不同的地理資訊引擎節點

目標:問題(九)中10 在對MapNode做初始化時,需要建立地理資訊引擎節點。 void MapNode::init() { _terrainEngine = TerrainEngineNodeFactory::create( terrainOptions ); } osgEa

Android ConstraintLayout完全解析和效能分析章節

一、說在前面的話 在這裡預祝大家2019年:豬事順利,青春永豬,豬圓玉潤,豬籠入水—八面來財 對於這個已經出現了兩年的新佈局ConstraintLayout,之前只是作為知識瞭解並未在真正的使用它,今天讓我們來從幾個方面解讀ConstraintLayout並對它的效能做細緻化分析。

Linux啟動過程分析-----customize_machine註冊開發板相關硬體資訊

初始化過程進行到下面這一步: c0599c48 t __initcall_customize_machine3 呼叫的函式及其位置如下: Setup.c (arch\arm\kernel):arch_initcall(customize_machine) static int __in

演算法設計與分析

300. Longest Increasing Subsequence Given an unsorted array of integers, find the length of longest increasing subsequence. Example

iOS 面試題

能理解你的疑問,但是你問的問題不太正確,不存在編譯時的物件這個概念。 首先,宣告 NSString *testObject 是告訴編譯器,testObject是一個指向某個Objective-C物件的指標。因為不管指向的是什麼型別的物件,一個指標所佔的記憶體空間都是固定的,所以這裡宣告成任何型別的物件,

scrapy原始碼分析----------下載器Downloader

經過前面幾篇的分析,scrapy的五大核心元件已經介紹了4個:engine,scheduler,scraper,spidemw。 還剩最後一個downloader,這個下載器關係到了網頁如何下載,內容相對來說是最為複雜的一部分,這篇教程就逐步分析其原始碼。 下載操作開始於

Netty原始碼分析 ----- 拆包器之LengthFieldBasedFrameDecoder

本篇文章主要是介紹使用LengthFieldBasedFrameDecoder解碼器自定義協議。通常,協議的格式如下: LengthFieldBasedFrameDecoder是netty解決拆包粘包問題的一個重要的類,主要結構就是header+body結構。我們只需要傳入正確的引數就可以傳送和接收正確

【原創】Linux虛擬化KVM-Qemu分析之virtqueue

# 背景 - `Read the fucking source code!` --By 魯迅 - `A picture is worth a thousand words.` --By 高爾基 說明: 1. KVM版本:5.9.1 2. QEMU版本:5.0.0 3. 工具:Source Insight

IOS崩潰Crash分析MTA騰訊雲分析,友盟

公司做IOS的走了,東西就丟給了我這個從來沒有做過IOS的。最近為了捕獲BUG,集成了MTA平臺的BUG收集。問題就來了,對於我這種,雖然沒有學過OC,但是寫寫程式碼還是可以的,xCode中除錯下BUG也行,但是碰到這種Crash的,還不帶崩潰路徑的,完全

Storm入門Twitter Storm源代碼分析之CoordinatedBolt

業務 什麽 協議 ack 第一個 ng- rec 功能 這一 作者: xumingming | 可以轉載, 但必須以超鏈接形式標明文章原始出處和作者信息及版權聲明網址: http://xumingming.sinaapp.com/811/twitter-storm-code

iOS學習筆記十七——件操作NSFileManager

技術分享 append hint pbo -cp fcm object 寫入 rtmp http://blog.csdn.net/xyz_lmn/article/details/8968213 iOS的沙盒機制,應用只能訪問自己應用目錄下的文件。ios不像Androi

python學習 件和流

內存 無緩沖 abcd 連接 sss 文件操作 打開文件 while 3.5 11.1 打開文件   >>> f = open(r‘c:\text\somefile.txt‘), 第一個參數是文件名,必須有;第二個是模式;第三個參數是緩沖。   11.1

linux之初始化

fun ps1 史記 intern header 例如 internet $path 名稱 前面寫了很多linux的知識,其實很多都是命令的,所以要去多多的練習才能學的更好,加油為了好工作。 要麽現在懶惰,未來討飯。要麽現在努力,未來愜意。 一、初始化文件概述   1

Linux 件目錄權限 chmod umask chown

mar chan 擁有 term 套接字 分享圖片 文件類型 直接 bae 一 文件目錄權限定義 首先我們先認識一下文件目錄的權限定義,請看下面ls -l的結果我們發現一個文件或者目錄的前面有10位的信息,第一位表示文件類型,大概有一下幾種類型:d 表示目錄 - 普通文件

Spark項目之電商用戶行為分析大數據平臺之JSON及FASTJSON

附加 處理 用戶行為分析 基於 大數據平臺 base IT 為什麽 init 一、概述 JSON的全稱是”JavaScript Object Notation”,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式

[轉載] Mac OS X背後的故事Mac OS X件系統的來龍去脈

ber 標準 rate eas 賓夕法尼亞 apple 思想 上層 ipad 由於各種缺點,幹掉HFS+勢在必行,然而用什麽取代HFS+呢?蘋果開始秘密移植下一代的文件系統—ZFS,然而在諸多因素的幹擾下,Mac OS X的ZFS支持卻只是曇花一現,未來文件系統之路將走向何

talib 中文:Cycle Indicator Functions 周期指標

ica baidu form clas period not real lin component Cycle Indicator Functions 不是很懂,歡迎指教 HT_DCPERIOD - Hilbert Transform - Dominan

[匯] iOS Crash相關2

16進制 自信 dea aaaaa sta 崩潰報告 內存 block nil 開發程序的過程中不管我們已經如何小心,總是會在不經意間遇到程序閃退。腦補一下當你在一群人面前自信的拿著你的App做功能預演的時候,流暢的操作被無情地Crash打斷。聯想起老羅在發布Smartis