加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 当某个类被添加到自动释放池时,我可以创建一个Xcode断点

发布时间:2020-12-14 18:00:39 所属栏目:百科 来源:网络整理
导读:我正在尝试调试一些ARC代码,如果我能找到某个类的对象何时被添加到自动释放池中(而不是在轨道上实际自动释放时),那将非常有用. 这是可能的,例如断点吗?或者通过覆盖’autorelease’方法并在其中加入断点?有什么建议? – 编辑 – 问题是我发生了一个不常发
我正在尝试调试一些ARC代码,如果我能找到某个类的对象何时被添加到自动释放池中(而不是在轨道上实际自动释放时),那将非常有用.

这是可能的,例如断点吗?或者通过覆盖’autorelease’方法并在其中加入断点?有什么建议?

– 编辑 –

问题是我发生了一个不常发生的崩溃,其中UIView的自定义子类在后台线程上自动释放,崩溃因为UIView不能在后台线程上释放.跟踪如下所示:

0    libsystem_kernel.dylib  __pthread_kill + 8
1    libsystem_c.dylib   pthread_kill + 54
2    libsystem_c.dylib   abort + 94
3    libc++abi.dylib     abort_message + 46
4    libc++abi.dylib     default_terminate() + 24
5    libobjc.A.dylib     _objc_terminate + 146
6    libc++abi.dylib     safe_handler_caller(void (*)()) + 76
7    libc++abi.dylib     operator delete(void*)
8    libc++abi.dylib     __cxa_throw + 122
9    libobjc.A.dylib     objc_exception_throw + 94
10   CoreFoundation  +[NSException raise:format:]
11   Foundation  -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 90
12   MYAPP   MySuperclass.m line 156 -[MySuperclass dealloc]
13   MYAPP  MyClass.m line 41 -[MyClass dealloc]
14 ...   libobjc.A.dylib     _objc_rootRelease + 36
15   libobjc.A.dylib     objc_release + 38
16   libobjc.A.dylib     (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 224
17   libobjc.A.dylib     _objc_autoreleasePoolPop + 12
18   CoreFoundation  _CFAutoreleasePoolPop + 18
19   libdispatch.dylib   _dispatch_worker_thread2 + 338
20   libsystem_c.dylib   _pthread_wqthread + 294

解决方法

这可能对你的问题没有帮助,但我认为它回答了你原来的问题:

您可以在[NSObject自动释放]上添加符号断点,然后设置条件以匹配您的类.如果你在设备$r0上运行应该保持指向接收对象的指针.你需要进行一些强制转换才能使条件有效:(BOOL)[(id)$r0 isKindOfClass:[NSArray class]]每当NSArray被添加到autoreleasepool时就会中断.请注意,一切都将运行得非常慢,因为调试器必须在每次自动释放时中断并检查条件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读