symbol stub
符号打桩
把我们的应用程序,
编译成汇编代码,
执行外部库的函数,
就成了跳转地址 ( symbol stub
)
debug, 按住 ctrl,
以汇编代码的语句,单步执行
debug, 没有按住 ctrl,
以高级语言的语句,单步执行
走外部函数,就会走外部函数的桩 ( stub )
桩里面的代码,
指向一个新的地址,是用来寻址的
走外部函数,先找到一个桩,
运行桩里面的代码,( 是一个偏移值 )
在懒加载符号表里面
( lazy Symbol Pointers )
懒加载符号表, Lazy Symbol Pointers
例如: Foundation 中的 NSLog
直接加载符号表, Non-Lazy Symbol Pointers
dyld_stub_binder
( 我只看见一个 )
指针在 arm 64 里面,占 8 个字节
外部函数 ( 系统库,三方库的执行 ),
-
第一次执行,有一个绑定
-
后来的执行,
绑定后,外部函数的地址,发生了改变