使用atos分析iOS崩潰日誌

來源:互聯網
上載者:User

標籤:des   blog   io   os   使用   ar   檔案   sp   div   

當APP出現崩潰時,一般會在XCode的Device介面裡面出現崩潰日誌,大概像這樣:

Incident Identifier: FBF87174-405D-4F1C-A745-E3D9F7858F4FCrashReporter Key:   31da19c0a9879bc6ca613ad7611c14ccebe2a82dHardware Model:      iPhone4,1Process:         MyProj [285]Path:            /var/mobile/Applications/C6E9AF9C-ACF3-4C8D-8623-DC432CBCF1AB/MyProj.app/MyProjIdentifier:      MyProjVersion:         ??? (???)Code Type:       ARM (Native)Parent Process:  launchd [1]Date/Time:       2014-09-30 17:09:08.491 +0800OS Version:      iOS 6.1.3 (10B329)Report Version:  104Exception Type:  EXC_CRASH (SIGABRT)Exception Codes: 0x0000000000000000, 0x0000000000000000Crashed Thread:  0Last Exception Backtrace:0   CoreFoundation                0x323ed29e 0x3232b000 + 7952941   libobjc.A.dylib               0x3a11597a 0x3a10d000 + 351942   CoreFoundation                0x323ed1c0 0x3232b000 + 7950723   MyProj                0x0065732c 0x4000 + 66322364   libsystem_c.dylib             0x3a593e86 0x3a55b000 + 2330945   WebCore                       0x3851d6be 0x3833d000 + 19678066   WebCore                       0x3851d6be 0x3833d000 + 19678067   WebCore                       0x383c5eb8 0x3833d000 + 5608248   WebCore                       0x383c4f60 0x3833d000 + 5568969   WebCore                       0x383c4de4 0x3833d000 + 55651610  WebCore                       0x383c4db6 0x3833d000 + 55647011  WebCore                       0x383a6a1e 0x3833d000 + 43267012  WebCore                       0x383a69d4 0x3833d000 + 43259613  WebCore                       0x383a69f0 0x3833d000 + 43262414  WebCore                       0x383a69d4 0x3833d000 + 43259615  WebCore                       0x383a69f0 0x3833d000 + 43262416  WebCore                       0x383a69d4 0x3833d000 + 43259617  WebCore                       0x383a69f0 0x3833d000 + 43262418  WebCore                       0x383a69d4 0x3833d000 + 43259619  WebCore                       0x383a69f0 0x3833d000 + 43262420  WebCore                       0x383a69d4 0x3833d000 + 43259621  WebCore                       0x383a69f0 0x3833d000 + 43262422  WebCore                       0x383a69d4 0x3833d000 + 43259623  WebCore                       0x383a69f0 0x3833d000 + 43262424  WebCore                       0x383a69d4 0x3833d000 + 43259625  WebCore                       0x383a69f0 0x3833d000 + 43262426  WebCore                       0x383a69d4 0x3833d000 + 43259627  WebCore                       0x383a69f0 0x3833d000 + 43262428  WebCore                       0x383a69d4 0x3833d000 + 43259629  WebCore                       0x383a69f0 0x3833d000 + 43262430  WebCore                       0x383a69d4 0x3833d000 + 43259631  WebCore                       0x383a69f0 0x3833d000 + 43262432  WebCore                       0x383c4a4a 0x3833d000 + 55559433  WebCore                       0x3835c12a 0x3833d000 + 12727434  WebCore                       0x385aa944 0x3833d000 + 254598835  WebKit                        0x38cf2614 0x38c6d000 + 54632436  WebCore                       0x38349d30 0x3833d000 + 5252837  CoreFoundation                0x323c267e 0x3232b000 + 62015838  CoreFoundation                0x323c1f7a 0x3232b000 + 61836239  CoreFoundation                0x323c0cb2 0x3232b000 + 61355440  CoreFoundation                0x32333eb8 0x3232b000 + 3653641  CoreFoundation                0x32333d44 0x3232b000 + 3616442  WebCore                       0x38347500 0x3833d000 + 4224043  libsystem_c.dylib             0x3a56c30c 0x3a55b000 + 7041244  libsystem_c.dylib             0x3a56c1d4 0x3a55b000 + 70100Thread 0 name:  Dispatch queue: com.apple.main-threadThread 0 Crashed:0   libsystem_kernel.dylib        0x3a613350 0x3a602000 + 704801   libsystem_c.dylib             0x3a58a11e 0x3a55b000 + 1927982   libsystem_c.dylib             0x3a5c696e 0x3a55b000 + 4406863   libc++abi.dylib               0x39b64d4a 0x39b61000 + 156904   libc++abi.dylib               0x39b61ff4 0x39b61000 + 40845   libobjc.A.dylib               0x3a115a74 0x3a10d000 + 354446   libc++abi.dylib               0x39b62078 0x39b61000 + 42167   libc++abi.dylib               0x39b62110 0x39b61000 + 43688   libc++abi.dylib               0x39b63594 0x39b61000 + 96209   libobjc.A.dylib               0x3a1159cc 0x3a10d000 + 3527610  CoreFoundation                0x32333f1c 0x3232b000 + 3663611  CoreFoundation                0x32333d44 0x3232b000 + 3616412  GraphicsServices              0x35f0c2e6 0x35f07000 + 2122213  UIKit                         0x342492fc 0x341f2000 + 35711614  MyProj                0x00054b9a 0x4000 + 33065015  MyProj                0x00009884 0x4000 + 22660Thread 1 name:  Dispatch queue: com.apple.libdispatch-managerThread 1:0   libsystem_kernel.dylib        0x3a603648 0x3a602000 + 57041   libdispatch.dylib             0x3a533974 0x3a52b000 + 351882   libdispatch.dylib             0x3a533654 0x3a52b000 + 34388Thread 0 crashed with ARM Thread State (32-bit):    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x3c0dc534    r4: 0x00000006    r5: 0x3c0dcb88      r6: 0x00eaf164      r7: 0x2fdffa14    r8: 0x00eaf140    r9: 0x00000400     r10: 0xffffffff     r11: 0x00000005    ip: 0x00000148    sp: 0x2fdffa08      lr: 0x3a58a123      pc: 0x3a613350  cpsr: 0x00080010Binary Images:    0x4000 -   0x853fff +MyProj armv7  <3559ce647eda37a9a26f9aecbf7b6923> /var/mobile/Applications/C6E9AF9C-ACF3-4C8D-8623-DC432CBCF1AB/MyProj.app/MyProj0x2fe22000 - 0x2fe42fff  dyld armv7  <280610df5ed43ec7aa00629a27009302> /usr/lib/dyld0x31321000 - 0x313f2fff  RawCamera armv7  <8752cce31e8e3ceab5d88c84e3481db2> /System/Library/CoreServices/RawCamera.bundle/RawCamera

  有的時候日誌裡面會給出詳細的類和方法名稱,但是有的時候給出的是像這種二進位類型的東西,我們需要把它人工轉換為可以看得懂的類和方法名稱,即所謂的符號化。

有一點需要注意的是,崩潰日誌、.APP包和.dSYM檔案是嚴格對應的,一個崩潰日誌只有和對應的的.APP包和.dSYM檔案在一起的時候才能夠被符號化,所以在應用程式打包的時候,保留對應的.ARCHIVER檔案是一個相當好的辦法。

1:.APP包和.dSYM檔案的取得

這個比較簡單,在對應的.ARCIVER檔案裡面,點擊『顯示包內容』,就可以直接看見這兩個檔案了,拷到其他地方備用。

.dSYM檔案拷出來以後,在.dSYM裡面還有一個MyProj檔案,也拷出來備用。

2:如何查看日誌、.APP包和.dSYM檔案的對應關係

開啟TERMINAL,進入.APP和.dSYM檔案所在的目錄,輸入以下命令:

$ dwarfdump -u MyProj.app/MyProj

  即可以看到MyProj.app對應的UUID

如果輸入命令

$ dwarfdump -u MyProj

  則可查看.dSYM檔案對應的UUID

定位到崩潰日誌的Binary Images行的第一行,你的工程名後面用角括弧圍起來的那一圈就是記錄檔對應的UUID,兩個UUID一定要對應起來才可以。

3:用atos手動符號化記錄檔

定位到.APP和.dSYM檔案所在的目錄,開啟TERMINAL,輸入:

xcrun atos -arch armv7 -o MyProj 0xXXXXXXXX(你想要解析的地址)

  這裡所說到的地址,就是

3   MyProj                0x0065732c 0x4000 + 6632236

  記錄檔這一行裡面的0x0065732c,atos可以通過.dSYM檔案直接把它轉譯成可以讀懂的類名和方法名。

使用atos分析iOS崩潰日誌

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.