iOS Crash 分析(文三)- 符號化崩潰日誌

來源:互聯網
上載者:User

iOS Crash 分析(文三)- 符號化崩潰日誌
iOS Crash 分析(文三)- 符號化崩潰日誌

未符號化的崩潰日誌就象一本天書,看不懂,更別談分析崩潰原因了。所以我們在分析日誌之前,要把日誌翻譯成我們可以看得懂的文字。這一步我們稱之為符號化。


在iOS Crash分析(文一)中已經提到過符號化的兩種方式:

1.利用Xcode符號化2.利用symbolicatecrash指令碼符號化

其實這兩種分析方式都使用了同一個工具符號化:***atos***。
atos是蘋果提供的符號化工具,在Mac OS系統下預設安裝。
使用***atos***符號化需要dsym檔案。dsym檔案是在編譯工程的時候產生的,可以在Xcode Organizer的Archives標籤欄下找到所有已歸檔的應用檔案。它儲存了編譯過程的詳細資料,其中包括符號資訊。

注意: 你必需同時保留應用二進位檔案和.dSYM檔案才能將崩潰日誌完整符號化。每次提交到iTunes Connect的構建都必需歸檔。.dSYM檔案和二進位檔案是特定綁定於每一次構建和後續構建的,即使來自相同的原始碼檔案,每一次構建也與其他構建不同,不能相互替換。如果你使用Build 和 Archive 命令,這些檔案會自動放在適當位置。 如果不是使用Build 和 Archive命令,放在Spotlight能夠搜尋到的位置(比如Home目錄)即可。



下面我們用***atos***對一條Crash進行符號化
還是看下面的例子:

### 1.進程資訊 ###Incident Identifier: E4201F10-6F5F-40F9-B938-BB3DA8ED7D50CrashReporter Key:   TODOHardware Model:      iPhone4,1Process:         Taobao4iPhone [3538]Path:            /var/mobile/Applications/E3B51E77-D44D-4B3E-8767-B7DC2008D138/Taobao4iPhone.app/Taobao4iPhoneIdentifier:      com.taobao.taobao4iphoneVersion:         4.8.1Code Type:       ARMParent Process:  launchd [1]### 2.基本資料 ###Date/Time:       2014-09-16 21:39:30 +0000OS Version:      iPhone OS 7.1.2 (11D257)Report Version:  104### 3.異常資訊 ###Exception Type:  SIGSEGVException Codes: SEGV_ACCERR at 0xa2400db3Crashed Thread:  0### 4.線程回溯 ###Thread 0 name:  Dispatch queue: com.apple.main-thread### 5.Crash呼叫堆疊 ###Thread 0 Crashed:0   libobjc.A.dylib                     0x3838760c 0x38375000 + 752761   Taobao4iPhone                       0x012c03e1 0x66000 + 192440012   Taobao4iPhone                       0x012c054f 0x66000 + 192443673   Foundation                          0x2e4de163 0x2e419000 + 8072674   CoreFoundation                      0x2dac9167 0x2da2a000 + 6516235   CoreFoundation                      0x2dac8d7f 0x2da2a000 + 6506236   CoreFoundation                      0x2dac711b 0x2da2a000 + 6433557   CoreFoundation                      0x2da31ebf 0x2da2a000 + 324478   CoreFoundation                      0x2da31ca3 0x2da2a000 + 319079   GraphicsServices                    0x3298b663 0x32982000 + 3849910  UIKit                               0x3037e14d 0x30310000 + 45089311  Taobao4iPhone                       0x0006b349 0x66000 + 2132112  Taobao4iPhone                       0x0006a5e8 0x66000 + 17896Thread 1:0   libsystem_kernel.dylib              0x38928808 0x38928000 + 20561   libdispatch.dylib                   0x38869e03 0x3885f000 + 44547### 5.動態庫資訊 ###Binary Images:   0x66000 -  0x19cdfff +Taobao4iPhone armv7  <43ebe409980f31fd9be165a64b002af5> /var/mobile/Applications/E3B51E77-D44D-4B3E-8767-B7DC2008D138/Taobao4iPhone.app/Taobao4iPhone 0x9fa9000 -  0x9fb4fff  QuickSpeak armv7   /System/Library/AccessibilityBundles/QuickSpeak.bundle/QuickSpeak0x2c667000 - 0x2c669fff  AXSpeechImplementation armv7   /System/Library/AccessibilityBundles/AXSpeechImplementation.bundle/AXSpeechImplementation

我從中選出一條調用進行符號化:

1   Taobao4iPhone                       0x012c03e1 0x66000 + 19244001

使用下面的命令符號化:

atos -arch armv7 -o "Taobao4iPhone.app.dSYM" -l 0x66000 0x012c03e1

結果:

1   Taobao4iPhone   0x012c03e1 -[TBSNSPagesContainerView subviewLayoutPage:] (in Taobao4iPhone) (TBSNSPagesContainer.m:227)

可以看到崩潰的類為TBSNSPagesContainerView,函數為subviewLayoutPage,檔案名稱是TBSNSPagesContainer.m,行數是227行。

我們返回來看一下atos用法:

atos -o dysm檔案路徑 -l  模組load地址 -arch cpu指令集種類 調用方法的地址

dysm檔案路徑:可以在Xcode Organizer的Archives標籤欄下找到所有已歸檔的應用檔案。它儲存了編譯過程的詳細資料,其中包括符號資訊。
模組load地址:模組載入的基地址,可以在日誌的***動態庫資訊***中找到對應模組的基地址。這裡為0x66000
cpu指令集種類:可以為armv6 armv7 armv7s arm64。具體用哪個,可以參考對應模組的***動態庫資訊***中確定。如

0x66000 -  0x19cdfff +Taobao4iPhone armv7  <43ebe409980f31fd9be165a64b002af5> /var/mobile/Applications/E3B51E77-D44D-4B3E-8767-B7DC2008D138/Taobao4iPhone.app/Taobao4iPhone

那麼Taobao4iPhone模組的cpu指令集為armv7
調用方法的地址:這裡是0x012c03e1,在iOS Crash分析(文二)中做過解釋

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.