断点、汇编分析的常见方法

拿 NSObject alloc 举例?

我们现在需要知道alloc的源码所在

方法1.断点+Control键 然后Step into

在alloc处打一个断点,进到断点处,按住control键

按住control键前后,底部断点状态的变化


按住Control键前.png

按住Control键后.png

然后一直Step into,直到汇编即可停止


libobjc.A.dylib->objc_alloc.png

结论:现在能知道alloc,底层就是调用了libobjc.A.dylib 的objc_alloc。

方法2. 符号断点

直接在合适的地方打上 alloc的符号断点,下完符号断点,往下跳过,会直接来到:

libobjc.A.dylib`+[NSObject alloc]:
->  0x7fff514105ed <+0>: jmp    0x7fff51410611            ; _objc_rootAlloc

然后Step into,最后也会到汇编处,同样得到底层源码方法。

方法3.直接查看汇编

到alloc断点处,Debug/DebugWorkflow/Always show Disassembly


断点处查看汇编.png

然后一步步Step into,能看到底层调用栈。

最后

最后就能知道alloc,底层就是调用了libobjc.A.dylib 的objc_alloc。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容