iOS9:崩溃报告中的重复行导致symbolicatecrash卡住 [英] iOS9: duplicated lines in crash reports are causing symbolicatecrash to get stuck
问题描述
这是不是问题,因为我已经找到了解决方法。我正在发布它,以便其他人可以利用我花在它上面的时间,并使用我建议的解决方法。
This is not a question because I have already found a workaround. I am publishing it so that others can take advantage on the hours I was spending on it, and use my suggested workaround.
我有一些奇怪的崩溃报告 - 一个该行重复多次:
I have got some strange crash reports - a single line was duplicated many times:
...
0x190e08000 - 0x190e49fff Notes arm64 <f45c09ce977b3282ab0e879252dfebee> /System/Library/PrivateFrameworks/Notes.framework/Notes
0x190f9c000 - 0x190fa6fff NotificationsUI arm64 <73dcb247ed183ce7bb330d7bb55f93bd> /System/Library/PrivateFrameworks/NotificationsUI.framework/NotificationsUI
0x190fa8000 - 0x190faafff OAuth arm64 <c2658cb3208b342dbe1e91cea30ebdd5> /System/Library/PrivateFrameworks/OAuth.framework/OAuth
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x191900000 - 0x191903fff ParsecSubscriptionServiceSupport arm64 <c70467637c9332c7b0be897200c9ccb1> /System/Library/PrivateFrameworks/ParsecSubscriptionServiceSupport.framework/ParsecSubscriptionServiceSupport
0x1919c8000 - 0x1919ebfff Pegasus arm64 <82f60f2d5ad73b5fa89d283a4e992e88> /System/Library/PrivateFrameworks/Pegasus.framework/Pegasus
0x191a30000 - 0x191a57fff PersistentConnection arm64 <8d0b7602daee3aa588c37704a6e3a206> /System/Library/PrivateFrameworks/PersistentConnection.framework/PersistentConnection
...
它造成的symbolicatecrash(perl)脚本卡住了。
原因是该脚本最初旨在链接类似的条目,假设它们具有不同的基址。然而,该代码从未起作用,因为它有一个错误:
it caused the symbolicatecrash (perl) script to get stuck. The reason is that the script was originally intended to chain similar entries, assuming they have a different base address. However that code was never working because it has a bug:
# add ourselves to that chain
$images{$nextIDKey}{nextID} = $image{base};
# and store under the key we just recorded
$bundlename = $bundlename . $image{base};
错误是第一行实际应该是:
$images{$nextIDKey}{nextID} = $bundlename . $image{base};
但是我建议解决方法将忽略这些重复的行在此代码上方添加一个 next
命令,即
However I'm suggesting a workaround that will ignore these duplicated lines by adding a next
command a bit above this code, i.e.
# frameworks and apps (and whatever) may share the same name, so disambiguate
if ( defined($images{$bundlename}) ) {
next;
这不是一个干净的解决方案,因为我们在这里缺少一些保护,但至少它会起作用大多数情况。
this is not a clean solution because we are missing some protection here, but a least it will work for most of the cases.
无论如何希望Apple尽快删除这些重复。
Anyway hoping for Apple to remove these duplications soon.
推荐答案
您可以使用以下shell脚本来修补symbolicatecrash来修复它:
You can use the following shell script which will patch symbolicatecrash to fix it:
curl -o /tmp/t.patch https://raw.githubusercontent.com/zqxiaojin/OptSymbolicatecrash/master/fix_dead_loop.patch && cd `xcode-select -p`/../SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/ && sudo patch symbolicatecrash /tmp/t.patch && cd -
或者从我的github复制symbolicatecrash https://github.com/zqxiaojin/OptSymbolicatecrash
Or copy the symbolicatecrash from my github https://github.com/zqxiaojin/OptSymbolicatecrash
这篇关于iOS9:崩溃报告中的重复行导致symbolicatecrash卡住的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!