我们做项目时候, 我们希望快速查到指定源码, 所以快速的找到"指定"源码非常重要
拿一份普普通通项目举例
![](https://img.haomeiwen.com/i5954916/db4d49a46581335d.png)
例如 我们想知道 alloc方法在哪个源码里面
![](https://img.haomeiwen.com/i5954916/744ceea8b3e195eb.png)
control + 点击
进入
![](https://img.haomeiwen.com/i5954916/052419d2de252195.png)
在这里我们发现无从下手。 为什么呢? 我们找的姿势不对
比如我们想找 alloc
源码
方法1 符号断点
选择断点 → 点击左下角" +
" → Symbolic Breakpoint
![](https://img.haomeiwen.com/i5954916/30c9f423c65e1931.png)
这里比如我们想知道alloc
源码位置, 那么就输入alloc
![](https://img.haomeiwen.com/i5954916/4a304e36ea0bfdbe.png)
选完运行, 会看到这样
![](https://img.haomeiwen.com/i5954916/094bf259c5960c5c.png)
哪个是我们想要找的呢? 因为程序中很多地方都有用到alloc
所以, 我们还要多加个断点
现在我们先要定位的alloc 处加断点
![](https://img.haomeiwen.com/i5954916/1ba6a17f97f923b5.png)
运行程序, 断在普通断点的地方之后, 我们再加符号断点, 当然我们也可以通过打开关闭符号断点进行此操作
![](https://img.haomeiwen.com/i5954916/c5467adc70055331.png)
我们点击继续运行, 可看到
![](https://img.haomeiwen.com/i5954916/e2922839d41a0955.png)
![](https://img.haomeiwen.com/i5954916/3f4468cfa5847e52.png)
上面图片可以看出alloc
在libobjc.A.dylib
库中, 苹果开发者相应的开源网址下载对应库源码进行探索即可
方法2 Step into点击查找
还是拿alloc举例 先点一个普通断点, 运行, 断点断到这里
![](https://img.haomeiwen.com/i5954916/c49f8f3edd15705e.png)
通过control
+ step into
继续查找
![](https://img.haomeiwen.com/i5954916/b9d0d7fdcd059de3.gif)
点击之后显示
![](https://img.haomeiwen.com/i5954916/2669f8d1203849cf.png)
这时候我们再加个objc_alloc
符号断点, 点击Continue program execution
继续执行
![](https://img.haomeiwen.com/i5954916/124c15f7cf07de3d.png)
可以看到进入了libobjc.A.dylib
中的objc_alloc
函数,由此可知alloc方法的源码在libobjc.A.dylib
库中。
方法3 汇编方法
老地方加断, 断到这里
![](https://img.haomeiwen.com/i5954916/c49f8f3edd15705e.png)
依次Debug
→Debug Workflow
→ Always Show Disassembly
![](https://img.haomeiwen.com/i5954916/aff84920e906265d.png)
![](https://img.haomeiwen.com/i5954916/86246f72d1792d69.png)
通过control
+ step into
到 objc_alloc
![](https://img.haomeiwen.com/i5954916/eaa9ae35667e5e03.png)
再点击control
+ step into
可看到
![](https://img.haomeiwen.com/i5954916/5ceb1ccfab5ffdc1.png)
这时候我们再加个objc_alloc
符号断点, 点击Continue program execution
继续执行
![](https://img.haomeiwen.com/i5954916/124c15f7cf07de3d.png)
可以看到进入了libobjc.A.dylib
中的objc_alloc
函数,也一样知道alloc方法的源码在libobjc.A.dylib
库中。
网友评论