обратная трассировка по-прежнему не читается после символизации журнала сбоев iPad

у меня есть эти журналы сбоев, и после того, как я поместил их в органайзер, они будут автоматически символизированы, но результат всегда один и тот же. вызовы iOS символизируются, а вызовы моего приложения - нет.

Я попытался скопировать файл дисма и приложения в одну и ту же папку, удалить и скопировать обратно. ничего не помогло.

Любая идея, что происходит? Итак, я получаю что-то вроде этого:

    Last Exception Backtrace:
0   CoreFoundation                  0x36d4088f __exceptionPreprocess + 163
1   libobjc.A.dylib                 0x31071259 objc_exception_throw + 33
2   CoreData                        0x350337ab -[NSPersistentStoreCoordinator removePersistentStore:error:] + 227
3   MyApp                           0x00139fbb 0x2e000 + 1097659
4   MyApp                           0x0013998d 0x2e000 + 1096077
5   MyApp                           0x00139a5d 0x2e000 + 1096285
6   libdispatch.dylib               0x3171d61f dispatch_once_f$VARIANT$mp + 47
7   MyApp                           0x001399ff 0x2e000 + 1096191
8   MyApp                           0x00139b47 0x2e000 + 1096519
9   MyApp                           0x0008915d 0x2e000 + 373085
10  MyApp                           0x0008a11b 0x2e000 + 377115
11  UIKit                           0x36ffbd3d -[UIViewController _setViewAppearState:isAnimating:] + 145
12  UIKit                           0x36ffeaa3 -[UINavigationController _startTransition:fromViewController:toViewController:] + 815
13  UIKit                           0x36ffe6ab -[UINavigationController _startDeferredTransitionIfNeeded] + 251
14  UIKit                           0x36ffe56b -[UILayoutContainerView layoutSubviews] + 179
15  UIKit                           0x36fbd0bd -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 149

вы можете видеть, что функции UIKit были символизированы, но не MyApp


person Edward Ashak    schedule 25.05.2012    source источник


Ответы (1)


Вам нужен файл dSYM и двоичный файл приложения той сборки, которая сгенерировала отчет о сбое. Обычно вы получаете этот результат в Xcode, если dSYM не был найден с помощью сценария символизации через прожектор. Если это из отладочной сборки, а вы тем временем создали новую сборку, вам не повезло. В противном случае убедитесь, что каталог, в котором хранится отладочная сборка, проиндексирован Spotlight. Если это сборка, которая заархивирована, убедитесь, что заархивированный каталог проиндексирован Spotlight.

Отчет о сбое содержит заголовок раздела «Двоичные изображения», а в верхней части этого двоичного файла вашего приложения есть ссылка с UUID двоичных файлов. Он выглядит как c42a118d722d2625f2357463535854fd, который нужно изменить на верхний регистр и формат 8-4-4-4-12, и тогда он будет выглядеть так: C42A118D-722D-2625-F235-7463535854FD.

Вы можете использовать это для поиска dSYM через прожектор в терминале через:

mdfind "com_apple_xcode_dsym_uuids == C42A118D-722D-2625-F235-7463535854FD"

person Kerni    schedule 25.05.2012
comment
Привет, Керни, у меня есть файлы .dSym и .app, и я пробовал также symbolicatecrash из Xcode из командной строки, но безуспешно. Я проверил версию из репозитория git, чтобы поработать над ней, а также мы сохранили файлы .dSym и .app при отправке приложения. когда я запускаю mdfind, он ничего не возвращает. Я все еще пытаюсь понять, как символизировать, есть идеи, куда двигаться дальше? - person Edward Ashak; 29.05.2012
comment
mdfind дал мне идею сделать mdlist в файле myApp.app.dSym и показать другой uuid. это должно быть проблемой, несоответствие между сбоем и файлом dSym, имеет ли это смысл? - person Edward Ashak; 29.05.2012
comment
В отчете о сбое всегда будет отображаться UUID двоичного файла приложения. Таким образом, если у вас есть двоичный файл приложения с этим UUID, а сохраненный вами dSYM имеет другой UUID, то процесс сборки не сгенерировал dSYM (например, проверьте временные метки?) или он был перезаписан позже. Вы можете использовать dwarfdump --uuid myApp.app/myApp для двоичного файла приложения и dwarfdump --uuid myApp.app.dSYM для пакета dSym, чтобы получить их UUID для сравнения. - person Kerni; 29.05.2012
comment
Привет, Керни, я проверял версии кода, которые мы отправили в магазин, и собирал их снова, чтобы сгенерировать файлы dSym и приложения, но безуспешно. Есть ли способ изменить UUID на что-то другое или это одностороннее преобразование? - person Edward Ashak; 29.05.2012
comment
Каждый раз, когда вы запускаете процесс сборки, двоичный файл будет уникальным, получая новый UUID. Так что нет никакого способа обратить это вспять. Что вы можете попробовать, так это изменить UUID в отчете о сбое, чтобы он был идентичен UUID новых сборок (строчные буквы и без символов), и посмотреть, получите ли вы какой-нибудь полезный результат. Это может быть удачей, если это сработает, это не должно быть сделано. Обязательно используйте функцию архивирования для магазина приложений и бета-версий в будущем, чтобы у вас было все под рукой. - person Kerni; 29.05.2012
comment
хорошо, теперь это имеет смысл. Поэтому я могу просто настроить uuid в журнале сбоев, чтобы проверить dSym. Большое спасибо Керни. - person Edward Ashak; 29.05.2012
comment
Kerni, Переключение uuid в бинарных образах сработало отлично :) Большое спасибо. - person Edward Ashak; 29.05.2012