[EXC_BAD_ACCESS KERN_INVALID_ADDRESS用于类方法

问题描述 投票:2回答:3

我正在看到EXC_BAD_ACCESS KERN_INVALID_ADDRESS用于类方法。

据我了解,对于类/静态方法,我应该不会看到它。

我想念什么吗?

堆栈跟踪:

线程:崩溃: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

ios objective-c memory-management crash
3个回答
3
投票

我已经多次看到此崩溃(具有非常相似的堆栈跟踪,即使不是完全相同的堆栈跟踪信息,也发现它与为新对象设置了非原子属性同时读取了它有关。)>

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

通过跟踪Mike Ash的这篇博客文章,我得以调试自己的问题:https://www.mikeash.com/pyblog/tales-from-the-crash-mines-issue-1.html

我强烈建议您通读整个内容,这涉及到使用反汇编程序进行调试,但是对于我们来说,这绝对是一次救命的方法

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


0
投票

EXC_BAD_ACCESS通常意味着您正在将目标C 消息


0
投票

这与“链接”到其他指针的指针有关。由于指针悬空而发生此崩溃。例如,当变量或对象试图访问已被取消分配的对象时。

© www.soinside.com 2019 - 2024. All rights reserved.