本文分析了乙份標準的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在同步裝置的時候回備份該目錄,比如說遊戲的存檔...