1.開(kāi)源代碼法
這個(gè)方法其實(shí)很簡(jiǎn)單带膜,蘋(píng)果其實(shí)開(kāi)源了非常多的基礎(chǔ)庫(kù)的源代碼瓮下,因此當(dāng)程序崩潰在這些開(kāi)源的基礎(chǔ)庫(kù)上時(shí)就可以去下載對(duì)應(yīng)的基礎(chǔ)庫(kù)的源代碼進(jìn)行閱讀记劈。然后從源代碼上進(jìn)行問(wèn)題的分析,從而找到產(chǎn)生異常崩潰的原因。你可以從https://opensource.apple.com處去下載開(kāi)源的最新的源代碼浓镜。這種方法的缺點(diǎn)是并不是所有的代碼都是開(kāi)源的溃列,而且開(kāi)源的代碼并不一定是你真機(jī)設(shè)備上運(yùn)行的iOS版本。因此這種方法只能是一種輔助方法膛薛。下面列出一些常見(jiàn)的基礎(chǔ)庫(kù)所對(duì)應(yīng)的地址:
簡(jiǎn)介動(dòng)態(tài)庫(kù)名稱(chēng)源代碼庫(kù)位置
Objective-C的運(yùn)行時(shí)庫(kù)听隐,NSObject的實(shí)現(xiàn)代碼libobjc.A.dylibhttps://opensource.apple.com/source/objc4/objc4-756.2/
堆內(nèi)存管理庫(kù)libsystem_malloc.dylibhttps://opensource.apple.com/source/libmalloc/libmalloc-166.251.2/
gcd庫(kù)libdispatch.dylibhttps://opensource.apple.com/source/libdispatch/libdispatch-1008.250.7/
pthread線(xiàn)程庫(kù)libsystem_pthread.dylibhttps://opensource.apple.com/source/libpthread/libpthread-330.250.2/
Block庫(kù)libsystem_blocks.dylibhttps://opensource.apple.com/source/libclosure/libclosure-73/
CoreFoundationCoreFoundation.frameworkhttps://opensource.apple.com/source/CF/CF-1153.18/
xnu內(nèi)核源代碼https://github.com/apple/darwin-xnu