iOS應用程式的Crash報告結構分析

2021-08-07 09:11:07 字數 3954 閱讀 7184

本文分析了乙份標準的ios應用程式的crash報告,它通常由以下6個部分組成。

1. 報告頭(header)

報告頭包含了應用程式以其執行環境的一些基本資訊,下面是報告頭的乙個例子。

複製**

incident identifier: e6ebc860-0222-4b82-bf7a-2b1c26be1e85

crashreporter key: 6196484647b3431a9bc2833c19422539549f3dbe

hardware model: iphone6,1

process: theelements [4637]

identifier:

com.example

version:

1.12

code type: arm (native)

parent process: launchd [1]

date/time: 2015-04-06

09:14:08.775 -0700

launch time: 2015-04-06

09:14:08.597 -0700

os version: ios 8.1

.3 (12b466)

report version: 105

異常**(exception codes)

異常**可能包含異常型別(exception type)、異常子型別(exception subtype)、處理器的詳細異常**(processor-specific exception codes)和其它能提供更多crash資訊的字段,最後乙個字段列出了觸發crash的執行緒索引。下面是異常**的示例。

複製**

exception type: exc_crash (sigabrt)

exception codes: 0x0000000000000000, 0x0000000000000000

triggered by

thread: 0

locked system files:

/private/var/mobile/library/addressbook/addressbook.sqlitedb

回溯(backtrace)

這部分列出了發生crash時執行緒的呼叫棧。示例如下。

複製**

thread 0 name: dispatch queue: com

.main-thread

thread 0 crashed:

0 theelements 0x0000000100063fdc -[atomicelementviewcontroller mytransitiondidstop:finished:context:] (atomicelementviewcontroller.m:201)

1 uikit 0x000000018ca5c2ec -[uiviewanimationstate senddelegateanimationdidstop:finished:] + 184

2 uikit 0x000000018ca5c1f4 -[uiviewanimationstate animationdidstop:finished:] + 100

3 quartzcore 0x000000018c380f60 ca::layer::run_animation_callbacks(void*) + 292

4 libdispatch.dylib

0x0000000198fb9368 _dispatch_client_callout + 12

5 libdispatch.dylib

0x0000000198fbd97c _dispatch_main_queue_callback_4cf + 928

6 corefoundation 0x000000018822dfa0 __cfrunloop_is_servicing_the_main_dispatch_queue__ + 8

7 corefoundation 0x000000018822c048 __cfrunlooprun + 1488

8 corefoundation 0x00000001881590a0 cfrunlooprunspecific + 392

9 graphicsservices 0x00000001912fb5a0 gseventrunmodal + 164

11 theelements 0x000000010005d800 main (main.m:55)

12 libdyld.dylib

0x0000000198fe2a04 start + 0

thread 1 name: dispatch queue: com

.libdispatch-manager

thread 1:

0 libsystem_kernel.dylib

0x00000001990e0c94 kevent64 + 8

1 libdispatch.dylib

0x0000000198fc897c _dispatch_mgr_invoke + 272

2 libdispatch.dylib

0x0000000198fbb3b0 _dispatch_mgr_thread + 48

...

執行緒狀態(thread state)

這部分列出了發生crash的執行緒的狀態,即暫存器和暫存器的值。示例如下。

複製**

thread

0 crashed with arm thread state (64

-bit):

x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0x00000001995f8020

x4: 0x0000000000000000 x5: 0x0000000000000001 x6: 0x0000000000000000 x7: 0x0000000000000000

x8: 0x0000000000000000 x9: 0x0000000000000015 x10: 0x0000000199601df0 x11: 0x0000000b0000000f

x12: 0x00000001741e8700 x13: 0x000001a5995f5779 x14: 0x0000000000000000 x15: 0x0000000044000000

x16: 0x00000001989724d8 x17: 0x0000000188176370 x18: 0x0000000000000000 x19: 0x00000001701dda60

x20: 0x0000000000000001 x21: 0x0000000136606e20 x22: 0x00000001000f6238 x23: 0x0000000000000000

x24: 0x000000019cc640a8 x25: 0x0000000000000020 x26: 0x0000000000000000 x27: 0x0000000000000000

x28: 0x000000019cc577c0 fp: 0x000000016fd1a8d0 lr: 0x00000001000effcc

sp: 0x000000016fd1a860 pc: 0x00000001000effdc cpsr: 0x60000000```

6. 二進位制映像(binary images)

這部分列出了當crash發生時被裝載程序式記憶體空間的依賴庫或者模組。示例如下。

複製**

ios應用程式和應用程式委託

其實說白了,就是乙個類將自己不願意實現的方法以協議的方式定義,同時在這個類中包含有乙個型別為id 泛型類 的例項變數,如果另乙個類實現了這個協議,那麼另外的這個類就可以作為第乙個類的委託物件,前乙個類將自己不願意實現的類委託給後乙個類。因為第乙個類擁有第二個類的引用,所有第乙個類的例項可以直接呼叫第...

iOS 應用程式狀態

聯絡人 石虎暱稱 嗡嘛呢叭咪哄 一 ios 應用程式狀態方法 bool 這是程式啟動時呼叫的函式。可以在此方法中加入初始化相關的 return yes void 應用當前正要從前台執行狀態離開時執行的函式。void 此時應用處在 background 狀態,並且沒有執行任何 未來將被掛起進入 sus...

ios 應用程式沙盒

應用沙盒的檔案系統目錄 應用沙盒其實就是應用程式所在的那個資料夾,包含了所有的資源檔案和可執行檔案。documents 就是儲存應用執行時生成的需要持久化的資料,什麼是需要持久化的資料就是儲存到硬碟裡面的資料,下次我們開機還是可以看到的資料,itunes在同步裝置的時候回備份該目錄,比如說遊戲的存檔...