Проблема заключается в том, что при символике адресов stacktrace, о которых сообщает PLCrashReporter, не возвращается символическая строка фактических системных фреймворков/библиотек. Моя строка приложения покажет правильную символическую линию.Atos не символизирует правильные системные рамки/библиотеки
Некоторые конфигурации. У меня на моем OSX 10.9.5 установлены Xcode 5.1.1 и Xcode 6.0.1.
При работе с Xcode 5.1.1 и проверке журнала устройства я вижу сбои, хотя в отчете о сбое не может быть символа.
Использование Xcode 6.0.1 сбой моего приложения и проверка журнала устройства. Я вижу, что отчет символизирован правильно.
Atos ни в коем случае не возвращает правильную символическую строку в рамках системы/библиотек Apple. Он просто возвращает мусор, классы, которые не имеют никакого отношения к соответствующей структуре/библиотеке. Ниже приведены примеры.
Подробно о том, что я делаю, чтобы символизировать мой стек cruttrace, сообщил мне, используя PLCrashReporter и сравнивая его с символическим отчетом журнала устройства.
Здесь StackTrace сообщили об использовании в PLCrashReporter unsymbolicated:
0 libsystem_platform.dylib 0x000000019726ce5c 0x197268000 + 20060
1 libsystem_c.dylib 0x00000001971253e0 0x197124000 + 5088
2 MyNewPlugin 0x000000010003ac70 0x10002c000 + 60528
3 UIKit 0x000000018d5f90b0 0x18d5b0000 + 299184
4 UIKit 0x000000018d5f9044 0x18d5b0000 + 299076
5 UIKit 0x000000018d5e2520 0x18d5b0000 + 206112
6 UIKit 0x000000018d5f8a44 0x18d5b0000 + 297540
7 UIKit 0x000000018d5f86d8 0x18d5b0000 + 296664
8 UIKit 0x000000018d5f3370 0x18d5b0000 + 275312
9 UIKit 0x000000018d5c4b50 0x18d5b0000 + 84816
10 UIKit 0x000000018d5c2c40 0x18d5b0000 + 76864
11 CoreFoundation 0x000000018a5bb7f4 0x18a4f0000 + 833524
12 CoreFoundation 0x000000018a5bab50 0x18a4f0000 + 830288
13 CoreFoundation 0x000000018a5b8de8 0x18a4f0000 + 822760
14 CoreFoundation 0x000000018a4f9dd0 0x18a4f0000 + 40400
15 GraphicsServices 0x00000001901e1c0c 0x1901d4000 + 56332
16 UIKit 0x000000018d62afc4 0x18d5b0000 + 503748
17 MyNewPlugin 0x0000000100041944 0x10002c000 + 88388
18 libdyld.dylib 0x00000001970f7aa0 0x1970f4000 + 15008
Здесь StackTrace выше от PLCrashReported symbolicated с помощью "xcrun Atos":
0 libsystem_platform.dylib _mh_execute_header (in MyNewPlugin) + 20060
1 libsystem_c.dylib _mh_execute_header (in MyNewPlugin) + 5088
2 MyNewPlugin -[SLKViewController causeBadAddress:] (in MyNewPlugin) (SLKViewController.m:175) + 60528
3 UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 232
4 UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 124
5 UIKit +[SSNetworkInfo cellMACAddress] (in MyNewPlugin) (SSNetworkInfo.m:0)
6 UIKit __copy_helper_block_234 (in MyNewPlugin) + 100
7 UIKit -[RequestWorker logEventAsyncWithName:logLevel:andCompletionBlock:] (in MyNewPlugin) + 992
8 UIKit -[ErrorResponse setData:] (in MyNewPlugin) + 56
9 UIKit +[SSProcessInfo processStatus] (in MyNewPlugin) (SSProcessInfo.m:97)
10 UIKit +[JSONModel(Networking) postModel:toURLWithString:completion:] (in MyNewPlugin) (JSONModel+networking.m:107)
11 CoreFoundation __55+[SPLJSONKeyMapper mapperFromUnderscoreCaseToCamelCase]_block_invoke_2 (in MyNewPlugin) + 1132
12 CoreFoundation __destroy_helper_block_17 (in MyNewPlugin) + 44
13 CoreFoundation -[RequestWorker sendUnhandledRequestAsync:andResultBlock:] (in MyNewPlugin) + 240
14 CoreFoundation +[SSApplicationInfo clipboardContent] (in MyNewPlugin) (SSApplicationInfo.m:49)
15 GraphicsServices __47-[SLKViewController logExceptionSynchronously:]_block_invoke (in MyNewPlugin) (SLKViewController.m:92) + 56332
16 UIKit -[DeviceInfo appendInfo] (in MyNewPlugin) + 1192
17 MyNewPlugin main (in MyNewPlugin) (main.m:16) + 88388
18 libdyld.dylib _mh_execute_header (in MyNewPlugin) + 15008
Вот StackTrace из вышеперечисленных же точный сбой в журнале устройства:
0 libsystem_platform.dylib 0x000000019726ce5c _platform_memmove + 188
1 libsystem_c.dylib 0x00000001971253dc strcpy + 40
2 MyNewPlugin 0x000000010003ac6c -[SLKViewController causeBadAddress:] (SLKViewController.m:174)
3 UIKit 0x000000018d5f90ac -[UIApplication sendAction:to:from:forEvent:] + 96
4 UIKit 0x000000018d5f9040 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 20
5 UIKit 0x000000018d5e251c -[UIControl _sendActionsForEvents:withEvent:] + 372
6 UIKit 0x000000018d5f8a40 -[UIControl touchesEnded:withEvent:] + 580
7 UIKit 0x000000018d5f86d4 -[UIWindow _sendTouchesForEvent:] + 688
8 UIKit 0x000000018d5f336c -[UIWindow sendEvent:] + 1168
9 UIKit 0x000000018d5c4b4c -[UIApplication sendEvent:] + 252
10 UIKit 0x000000018d5c2c3c _UIApplicationHandleEventQueue + 8496
11 CoreFoundation 0x000000018a5bb7f0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 20
12 CoreFoundation 0x000000018a5bab4c __CFRunLoopDoSources0 + 252
13 CoreFoundation 0x000000018a5b8de4 __CFRunLoopRun + 628
14 CoreFoundation 0x000000018a4f9dcc CFRunLoopRunSpecific + 448
15 GraphicsServices 0x00000001901e1c08 GSEventRunModal + 164
16 UIKit 0x000000018d62afc0 UIApplicationMain + 1152
17 MyNewPlugin 0x0000000100041940 main (main.m:16)
18 libdyld.dylib 0x00000001970f7a9c start + 0
Вы можете увидеть две символизируемые стеки стека, сначала из stackrrace_tractorReporter и вторую из журнала устройств Xcode. Я хотел бы в этом пункте сказать, что я не верю, что у адресов есть проблема, но что-то происходит с атосом. Использует ли Xcode инструмент symbolicatecrash для обозначения отчета Apple?
Команда atos: xcrun atos -arch arm64 -o MyNewPlugin.app.dSYM/Contents/Resources/DWARF/MyNewPlugin -l 0x197268000 0x000000019726ce5c
приведет к _mh_execute_header (in MyNewPlugin) + 20060
, что совершенно неверно, и оно должно вернуть что-то вроде отчета журнала устройства _platform_memmove + 188
.
Другой пример Atos доказать проблему для линии 3. xcrun atos -arch arm64 -o MyNewPlugin.app.dSYM/Contents/Resources/DWARF/MyNewPlugin -l 0x18d5b0000 0x000000018d5f90b0
, должен вернуться, UIKit 0x000000018d5f90ac -[UIApplication sendAction:to:from:forEvent:] + 96
, вместо возвращается, UIKit __30-[RequestWorker logEvent:]_block_invoke (in MyNewPlugin) + 232
, который не имеет ничего общего с UIKit, это внутренний класс я использую.
Вот как я создаю линии stacktrace, используя PLCrashReporter.
[NSString stringWithFormat:@"%-4ld%@ 0x0000000%" PRIx64 " 0x%" PRIx64 " + %" PRId64 "", (long)frameIndex, imageName, frameInfo.instructionPointer, baseAddress, pcOffset];
EDIT: Использования symbolicatecrash в терминале для отчета об аварии unsymbolicated яблока symbolicating всех системных узлов, но не строки приложения !!!
Вы когда-нибудь решают свою проблему? – Locksleyu
Нет, к сожалению, у меня нет, atos просто бесполезно или мне не хватает информации об использовании, где я не могу найти нигде! –