OStack程序员社区-中国程序员成长平台

标题: ios - 类方法的 EXC_BAD_ACCESS KERN_INVALID_ADDRESS [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 16:36
标题: ios - 类方法的 EXC_BAD_ACCESS KERN_INVALID_ADDRESS

我看到 EXC_BAD_ACCESS KERN_INVALID_ADDRESS 用于类方法。

据我了解,我不应该在类/静态方法中看到这种情况。

我错过了什么吗?

堆栈跟踪:

Thread : Crashed: com.apple.root.user-initiated-qos

0 libobjc.A.dylib 0x0000000196eac0b4 objc_retain + 20

1 $APP_NAME 0x00000001002611a8 +[$CLASS_NAME $METHOD_NAME:] ($CLASS_NAME.m:590)

2 libdispatch.dylib 0x0000000197511994 _dispatch_call_block_and_release + 24

3 libdispatch.dylib 0x0000000197511954 _dispatch_client_callout + 16

4 libdispatch.dylib 0x000000019751e780 _dispatch_root_queue_drain + 1848

5 libdispatch.dylib 0x000000019751fc4c _dispatch_worker_thread3 + 108

6 libsystem_pthread.dylib 0x00000001976f121c _pthread_wqthread + 816

7 libsystem_pthread.dylib 0x00000001976f0ee0 start_wqthread + 4



Best Answer-推荐答案


我已经多次看到这种崩溃(堆栈跟踪非常相似,如果不相同的话),发现它与使用新对象设置的非原子属性同时被读取有关。

那个 objc_retain +20 指令原来是对正在读取的对象的 isa 属性的调用——但此时对象已经被释放并且isa 指针更改为错误地址

我可以通过关注 Mike Ash 的这篇博文来调试我的问题: https://www.mikeash.com/pyblog/tales-from-the-crash-mines-issue-1.html

我强烈建议通读整篇文章——它涉及使用反汇编程序进行调试,但它在多个场合对我们来说绝对是救命稻草

编辑:请注意,我绝对不是 50% 确定这是您的问题,但我希望我的轶事经验可以为您节省一些时间。我知道我已经花了很多周的工作来调试看起来像这样的问题,但我仍然没有 100%

关于ios - 类方法的 EXC_BAD_ACCESS KERN_INVALID_ADDRESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108420/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4