OC底層原理01 - 探索源碼的三種方式

OC底層源碼的三種方式

1.直接使用符號(hào)斷點(diǎn)

2.通過control + step into (step into instruction)

3.匯編方法

下面以alloc為例,詳細(xì)描述如何使用三種方法進(jìn)行源碼探索

一、直接使用符號(hào)斷點(diǎn)

1.選擇斷點(diǎn)Symbolic Breakpoint

2.在輸入符號(hào)斷點(diǎn)名稱中,符號(hào)位置輸入alloc

3.在HLPerson *p1 = [HLPerson alloc]處加一個(gè)斷點(diǎn)

tips:在走到這部分?jǐn)帱c(diǎn)之前,需要關(guān)閉上面新增的符號(hào)斷點(diǎn),原因是因?yàn)閍lloc的調(diào)用有很多,如果開啟了就不能準(zhǔn)確的定位到HLPerson的alloc方法

4.程序運(yùn)行, 斷在HLPerson *p1 = [HLPerson alloc]部分時(shí),打開?alloc 符號(hào)斷點(diǎn),繼續(xù)執(zhí)行

以下為alloc 符號(hào)斷點(diǎn)斷住的堆棧調(diào)用情況,從下圖可以看出alloc的源碼位于libobjc.A.dylib庫(從Apple 相應(yīng)的開源網(wǎng)址下載 objc 源碼進(jìn)行查看)

二、通過control + step into (step into instruction)

1.在HLPerson *p1 = [HLPerson alloc]處加一個(gè)斷點(diǎn),運(yùn)行程序,會(huì)斷在此位置

2.按住control鍵,選擇?step into 鍵

3.進(jìn)去后,顯示如下內(nèi)容,然后再添加一個(gè)objc_alloc符號(hào)斷點(diǎn)

4.符號(hào)斷點(diǎn)后顯示了?objc_alloc?所在的源碼庫

三、匯編方法

1.Xcode 工具欄 選擇?Debug?-->?Debug Workflow?-->?Always Show Disassembly,這個(gè)選項(xiàng)表示始終顯示反匯編 ,即通過匯編

2.在HLPerson *p1 = [HLPerson alloc]處加一個(gè)斷點(diǎn),運(yùn)行程序

3.當(dāng)程序運(yùn)行到[HLPerson alloc]時(shí),堆棧調(diào)用信息如下,此時(shí)按住control,點(diǎn)擊?step into 鍵進(jìn)入,執(zhí)行到對(duì)應(yīng)?objc_alloc

4.同樣通過添加?objc_alloc?的符號(hào)斷點(diǎn)然后繼續(xù)執(zhí)行,便可查看源碼所在庫

至此,我們已經(jīng)了解了三種源碼探索的方式,后續(xù)將在探索的過程中使用這三種方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容