IOS静态调试符号含义[关闭]

Posted

技术标签:

【中文标题】IOS静态调试符号含义[关闭]【英文标题】:IOS static debug symbol meaning [closed] 【发布时间】:2012-12-02 17:12:48 【问题描述】:

我收到此错误,但我无法弄清楚它到底发生在哪里。

这是堆栈跟踪:

0 CoreFoundation 0x382952a3 __exceptionPreprocess + 163
1 libobjc.A.dylib 0x3358d97f objc_exception_throw + 31
2 CoreData 0x398fe0cf -[NSComparisonPredicate(_NSCoreDataSQLPredicateCategories) minimalFormInContext:] + 371
3 CoreData 0x399097af -[NSCompoundPredicateOperator(_NSCoreDataSQLPredicateCategories) minimalFormInContext:ofPredicates:] + 727
4 CoreData 0x398fd917 -[NSSQLGenerator initializeContextForFetchRequest:ignoreInheritance:nestingLevel:] + 539
5 CoreData 0x398fd3b3 -[NSSQLGenerator newSQLStatementForFetchRequest:ignoreInheritance:countOnly:nestingLevel:] + 39
6 CoreData 0x398fd2bd -[NSSQLAdapter _newSelectStatementWithFetchRequest:ignoreInheritance:] + 509
7 CoreData 0x398fced5 -[NSSQLCore newRowsForFetchPlan:] + 117
8 CoreData 0x398fc64f -[NSSQLCore objectsForFetchRequest:inContext:] + 683
9 CoreData 0x398fc119 -[NSSQLCore executeRequest:withContext:error:] + 469
10 CoreData 0x398fb531 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 1645
11 CoreData 0x398f9e2b -[NSManagedObjectContext executeFetchRequest:error:] + 647
12 CoreData 0x3996293f -[NSManagedObjectContext(_NestedContextSupport) _parentObjectsForFetchRequest:inContext:error:] + 399
13 CoreData 0x399630c9 __82-[NSManagedObjectContext(_NestedContextSupport) executeRequest:withContext:error:]_block_invoke_0 + 565
14 libdispatch.dylib 0x36eb2621 _dispatch_barrier_sync_f_slow_invoke + 81
15 libdispatch.dylib 0x36ea34b7 _dispatch_client_callout + 23
16 libdispatch.dylib 0x36ea4dcb _dispatch_main_queue_callback_4CF$VARIANT$up + 227
17 CoreFoundation 0x38268f3b __CFRunLoopRun + 1291
18 CoreFoundation 0x381dbebd CFRunLoopRunSpecific + 357
19 CoreFoundation 0x381dbd49 CFRunLoopRunInMode + 105
20 GraphicsServices 0x36f532eb GSEventRunModal + 75
21 UIKit 0x3a3882f9 UIApplicationMain + 1121
22 Sticky Free 0x000ac67b _mh_execute_header + 13947
23 Sticky Free 0x000ab1e0 _mh_execute_header + 8672


And here is the main error.
Invalid predicate: nil RHS

我在进行提取时从 NSPredicate 知道它。但是,我不确定是哪条线导致了它。我正在使用多线程 coredata 环境。

此问题非常间歇性,大约在 10 个会话中出现一次。任何帮助将不胜感激。

谢谢

【问题讨论】:

这是一个看起来很奇怪的堆栈帧:22 Sticky Free 0x000ac67b _mh_execute_header + 13947。您如何查看崩溃(或者您从哪里得到它)? 在异常上设置断点,然后你会看到哪一行导致了错误 以及谓词看起来如何,也许是一个属性值使它变得疯狂...... 【参考方案1】:

正如其他人所说:在objc_exception_throw 上设置一个符号断点,看看你的executeFetchRequest 中的哪一个会触发错误。 从带有executeFetchRequest 的行向上滚动到您定义谓词的位置。

RHS 倾向于代表右手边。假设您正在设置谓词:

[NSPredicate predicateWithFormat:@"%K = %@", attribute, value];

那么RHS 将是value。确保value 不是nil

【讨论】:

请关注并 +1 以了解 RHS 的含义!【参考方案2】:

我发现,我在退出时立即保存了主要上下文。所以,如果我不保存退出时的主上下文,我不会得到这个看起来很奇怪的崩溃。

【讨论】:

以上是关于IOS静态调试符号含义[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不公开所有符号的情况下为 iOS 创建静态库

当 iOS 应用程序链接到静态库时,如何获取丢弃的符号列表?

在 iOS 中使用静态库的“架构 i386 的未定义符号”

在 iOS 中为静态库添加前缀时过滤不需要的符号

xcode静态库调试

SpringBoot 在 IDEA 上怎么自动更新静态资源