ios 底層原理 :探索源碼的三種方式

本文主要介紹探索源碼的三種方法

    1. 符號斷點(diǎn)直接跟流程
    1. 通過按住 control + step into
    1. 匯編跟流程

下面詳細(xì)講解如何查找到函數(shù)所在的源碼庫,以 alloc 為例

1.符號斷點(diǎn)直接跟流程

  • 通過下 alloc 符號斷點(diǎn)

    • 選擇斷點(diǎn)symbolic Breakpoint


      F6408E77-E135-47FA-AE89-2C473F3236FF.png
  • 符號中輸入 alloc


    C557AA09-F029-4258-B5A8-A61E479560F2.png
  • main中的YXPersonal加一個(gè)斷點(diǎn)
    在走這一部分?jǐn)帱c(diǎn)之前,需要關(guān)閉上面新增的符號斷點(diǎn),因?yàn)橄到y(tǒng)層面也會調(diào)用很多次 alloc,如果不關(guān)閉的話就不能準(zhǔn)確定位到我們要研究的 YXPersonal 的 alloc


    69C550B6-29CB-439D-BA92-19E280F4084D.png
  • 以下為alloc 符號斷點(diǎn)處的堆棧情況,可以看出alloc 源碼位于libobjc.A.dylib庫(需要去蘋果開源網(wǎng)站下載 objc 源碼進(jìn)行探索)


    DF75EBF1-9604-470A-BFF3-5B71079E4800.png

2.通過按住 control + step into

  • main 中的 YXPersonal 處加一個(gè)斷點(diǎn)


    D2FEC6BB-97AF-41E5-A365-EF30FDAD3CA1.png
  • 按住 control 鍵,選擇 step into 鍵


    96C7DF97-F74C-47FA-B55C-3E65FE86D3A9.png
  • 進(jìn)去后,顯示為以下內(nèi)容


    96B87C7A-ECB4-4E0B-8770-A601607D2125.png
  • 在下一個(gè) objc_alloc 符號斷點(diǎn),就可以看到相應(yīng)庫信息


    image.png

3.匯編跟流程

  • 在 main 中 YXPersonal 處下一個(gè)斷點(diǎn)


    DCE02E3E-1100-4C8B-B1B8-86A18C423152.png
  • 工具欄 Debug -> DebugWorkFlow -> Always Show Disassembly


    0EF44AA3-62F6-45D0-86D2-A0E78FE8F7F0.png
  • 在 callq 處打一個(gè)斷點(diǎn),step into 進(jìn)入


    3C9EA259-4AEA-4249-8154-C74821A26EF9.png
7785C1E0-DC87-49E0-9983-2A0889A0B369.png
  • 同樣通過 objc_alloc符號斷點(diǎn),得知源碼庫所在位置

源碼地址:
總地址
直接地址
搜索 objc,選擇對應(yīng)版本

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

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

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