2014-09-27 4 views
9

Проблема заключается в том, что при символике адресов 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 всех системных узлов, но не строки приложения !!!

+0

Вы когда-нибудь решают свою проблему? – Locksleyu

+0

Нет, к сожалению, у меня нет, atos просто бесполезно или мне не хватает информации об использовании, где я не могу найти нигде! –

ответ

12

Ответ был таким простым, но иногда вы не видите его перед собой.

Вместо использования dSYM приложения вы используете фреймворк версии iOS, который имеет устройство при сбое. например для символов UIKit iOS 8.1.1

xcrun atos -arch arm64 -o ~/Библиотека/Разработчик/Xcode/iOS DeviceSupport/8.1.1 (12B436) /Symbols/System/Library/Frameworks/UIKit.framework/UIKit -l 0x18d5b0000 0x000000018d5f90b0

+0

Привет, @ george-taskos вы можете предоставить некоторую инструкцию о том, как символизировать стек, полученную с помощью NSSetUncaughtExceptionHandler, вот мой [post] (http: // stackoverflow .com/questions/34664162/how-to-get-the-line-of-the-crash-and-the-method-as-crashlytics-do-and-also-the) спасибо за любые советы заранее и проголосуйте за этот пост –

1

здесь я идти iOS crash reports: atos not working as expected для линий нанесения утомительно это, хотя, надо идти по одной строке за раз.

+0

Я видел этот ответ, это правильный подход теоретически, но он не работает, возвращает те же результаты, что и вы использовали флаг -l, передающий два адреса строки stacktrace. Просто повторите тестирование и получите тот же неверный результат для системных или других библиотек/фреймворков. Спасибо за ответ. –

+0

хорошо, похоже, вам придется приставать к яблоку, чтобы снова зафиксировать это. и держать пальцы скрещенными, они не игнорируют новую ошибку в bugreporter.apple.com –

 Смежные вопросы

  • Нет связанных вопросов^_^