拿 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。
网友评论