Как объединить отчеты о сбоях iOS от BugSense? - PullRequest
3 голосов
/ 06 октября 2011

Я начинаю получать отчеты о сбоях из своего приложения для iOS через BugSense . Я включил символы отладки в свое приложение и получил информацию об ошибках, например. «* - [NSMutableArray objectAtIndex:]: индекс 0 за пределами для пустого массива», а также следы стека, такие как:

Full Stacktrace  

0   CoreFoundation  __exceptionPreprocess   114
1   libobjc.A.dylib objc_exception_throw    24
2   CoreFoundation  -[__NSArrayM objectAtIndex:]    184
3   Myapp   Myapp   738167
4   UIKit   -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:]    662
5   UIKit   -[UITableView _userSelectRowAtPendingSelectionIndexPath:]   130
6   Foundation  __NSFireDelayedPerform  368
7   CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__   14
8   CoreFoundation  __CFRunLoopDoTimer  850
9   CoreFoundation  __CFRunLoopRun  1088
10  CoreFoundation  CFRunLoopRunSpecific    230
11  CoreFoundation  CFRunLoopRunInMode  58
12  GraphicsServices    GSEventRunModal 114
13  GraphicsServices    GSEventRun  62
14  UIKit   -[UIApplication _run]   404
15  UIKit   UIApplicationMain   670
16  Myap p  Myapp   11901
17  Myapp   Myapp   

Однако я хочу символизировать отчеты, чтобы точно определить, где находятся ошибки в моем коде. Как я могу взять данные отчета из Bugsense и сделать это? Есть ли способ загрузить «обычный» отчет о сбое из BugSense и использовать его, или данных, которые они предоставляют, достаточно, чтобы как-то работать? Я знаю, из какой версии приложения поступают отчеты, поэтому я знаю, какие двоичные файлы следует обозначать.

Ответы [ 4 ]

4 голосов
/ 15 декабря 2011

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

Отправленная вами трассировка стека частично символизирована.Похоже, что в BugSense возникла проблема с получением символов в вашем собственном коде.

Если вы следовали руководству по использованию до буквы, это может быть ошибкой самой платформы.Атос должен помочь вам обнаружить точные вызовы методов в вашем коде.

Отказ от ответственности: Я пишу код для BugSense-iOS.framework.

3 голосов
/ 04 мая 2013

Если у вас есть бесплатная учетная запись BugSense, она не будет символизировать отчеты о сбоях для вас. Однако вы можете заплатить $ 19 / месяц, чтобы включить эту функцию. В качестве альтернативы вы можете попробовать использовать этот скрипт на python, который я написал.

https://github.com/dr4ke616/Bugsense-Symbolicater

2 голосов
/ 21 февраля 2012

Вы также можете попробовать символизировать с Crittercism . Я использовал их в течение последнего месяца, и их система символизации была на месте.

0 голосов
/ 19 сентября 2014

Просто должен был пройти через это сам сегодня. Я нашел учебник на сайте Рэя Вендерлиха:

http://www.raywenderlich.com/33669/overview-of-ios-crash-reporting-tools-part-1

Я неправильно использовал Bugsense (без символов и хлебных крошек>. <). </p>

Примечание: крошка для довольно дорогой версии.

Как загрузить dSYM на сайт Bugsense, чтобы обозначить трассировку стека

Во всяком случае, из руководства я узнал, что мне нужно загрузить папку dSYM в виде архива в Bugsense.

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

Когда вы делаете архив, вы получаете файл архива в Window> Organizer.

Чтобы получить файл dSYM, вам необходимо:

  1. Щелкните правой кнопкой мыши архив> Показать в Finder из окна> Органайзер экран.

  2. Затем щелкните правой кнопкой мыши файл> Показать упакованное содержимое, это покажет вам папку dSYM.

  3. Щелкните правой кнопкой мыши и заархивируйте эту папку.

  4. Войдите в свою учетную запись bugsense, найдите свое приложение, перейдите на страницу настроек, и слева должна быть вкладка с именем "dSYM". Нажмите на него, а затем нажмите кнопку «Обзор и загрузка», чтобы загрузить dSYM.

Теперь вы можете перейти к каждой вашей ошибке и нажать кнопку «Символизировать», это превратит все эти неприятности:

0000x1aeaf390a 

аварийные сообщения на что-то вроде:

MyViewController:m110, [MyViewController objectAtIndex:17] out of bounds

Вам необходимо загрузить соответствующий ZIP-файл dSYM для соответствующего архива, который вы генерировали каждый раз, когда вы генерируете новую версию пакета вашего приложения.

В противном случае, если вы попытаетесь использовать Bugsense без этого dSYM, вы получите бесполезную трассировку стека.

Надеюсь, что это принесет пользу кому-нибудь в будущем. Удачи!

...