这种 crash 算是崩溃在哪一行?

比如这个,是执行 objc_retain 崩溃还是执行 ldr 崩溃的?
之所以问这个问题是我在 ldr 处打了断点,按道理说还没执行 ldr 。

比如这个,是执行 objc_retain 崩溃还是执行 ldr 崩溃的?
之所以问这个问题是我在 ldr 处打了断点,按道理说还没执行 ldr 。
(lldb) disassemble -n objc_retain
libobjc.A.dylib`objc_retain:
0x1c0aa7be0 <+0>: cbz x0, 0x1c0aa7c14 ; <+52>
0x1c0aa7be4 <+4>: tbnz x0, #0x3f, 0x1c0aa7c14 ; <+52>
0x1c0aa7be8 <+8>: ldr x8, [x0]
0x1c0aa7bec <+12>: and x8, x8, #0xffffffff8
0x1c0aa7bf0 <+16>: ldrb w8, [x8, #0x20] //////// 是在这里挂了, 加个断点看看
0x1c0aa7bf4 <+20>: tbz w8, #0x2, 0x1c0aa7c18 ; <+56>
0x1c0aa7bf8 <+24>: orr x8, xzr, #0x200000000000
“`
imp___stubs__objc_retain: // objc_retain
0000000100006548 nop ; CODE XREF=-[UIViewController new_initWithCoder:]+84
000000010000654c ldr x16, #_objc_retain_ptr ; _objc_retain
0000000100006550 br x16 ; _objc_retain
; endp
“`
@sunnywqf 原始代码就这些,就是 hook 了初始化方法。按照上述代码运行会崩溃,但是直接` [self new_initWithCoder:coder];`这样是不会崩溃的,有兴趣的话可以一起研究下。