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静态调试符号含义[关闭]的主要内容,如果未能解决你的问题,请参考以下文章