Атос не символизирует системные фреймворки / библиотеки должным образом

Проблема заключается в том, что при символизации адресов стековой трассировки, сообщаемых PLCrashReporter, не возвращается символическая строка фактических системных платформ / библиотек. Моя строка приложения показывает правильную строку с символом ошибки.

Некоторая конфигурация. Я установил на OSX 10.9.5 Xcode 5.1.1 и Xcode 6.0.1.

При работе с Xcode 5.1.1 и изучении журнала устройства я вижу сбои, хотя никакая символика не может иметь место в отчете о сбое.

Используя Xcode 6.0.1, вырывающий мое приложение и просматривающий журнал устройства, я вижу отчет, символизированный должным образом.

Atos ни в коем случае не возвращает правильную символическую строку системных фреймворков / библиотек Apple. Он просто возвращает наборы, классы, которые не имеют ничего общего с соответствующей структурой / библиотекой. Смотрите ниже примеры.

Подробно, что я делаю, чтобы символизировать мою трассировку стека аварийных сообщений, сообщенную мне с помощью PLCrashReporter и сравнения с символическим отчетом журнала устройств.

Вот трассировка стека, сообщенная с использованием PLCrashReporter без символов:

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

Вот вышеприведенная трассировка стека из PLCrashReported, обозначенная символом «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

Вот трассировка стека указанного выше точного сбоя из журнала устройства, обозначенного символом:

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

Вы можете видеть две символические трассировки стека, сначала из стека трассировки PLCrashReporter, а затем из журнала устройства Xcode. В этой связи я хотел бы сказать, что я не верю, что проблема связана с адресами, но что-то еще происходит с atos. Использует ли 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.

Еще один пример, подтверждающий проблему для строки 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, это внутренний класс, который я использую.

Так я создаю строки трассировки стека с помощью PLCrashReporter.

[NSString stringWithFormat:@"%-4ld%@ 0x0000000%" PRIx64 " 0x%" PRIx64 " + %" PRId64 "", (long)frameIndex, imageName, frameInfo.instructionPointer, baseAddress, pcOffset];

РЕДАКТИРОВАТЬ: Использование symbolicatecrash в терминале для несимметричного отчета о сбое яблока символизирует все системные сборки, но не строки приложения !!!

Ответы на вопрос(2)

Ваш ответ на вопрос