Menu

#2 Application name may not match binary in dSYM

2.0
open
None
2015-09-22
2015-08-26
Teivaz
No

Когда собираешь приложени можно назвать .app не так как записно в plist'е. Например приложение называется RealBoxing2, а при сборке к названию самого файла приложения можно добавлять конфигурацию. Тогда приложение будет иметь название RealBoxing2-Shipping.app.
При этом креш-лог будет содержать строчки типа
5 RealBoxing2 0x0000000100d7eeb0 0x10009c000 + 13512368
CCrachLog.cs:92 ты проверяешь совпадает ли имя файла, который был сгенерен с именем приложения из крешлога. В данном случае они не будут совпадать и лог не будет распарсен.
Я предлагаю брать имя приложения не из имени файла, а из plist'a
В dSYM есть Contents/Info.plist который содержит CFBundleIdentifier, там, среди прочего, и лежит правильное имя аппликухи.

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

Discussion

  • Teivaz

    Teivaz - 2015-08-26

    А, там же есть boost

     
  • andrey.simiklit

    andrey.simiklit - 2015-08-26

    Привет.

    Согласен, правельнее из plist.
    Кстати там не совсем полный буст.
    Я добавил только то что нужно было для shared_ptr.
    Можно впринципе и все остальное от boost туда добавить.

    С уважением,
    Андрей.

     
    • Teivaz

      Teivaz - 2015-08-26

      Хорошо, я посмотрю что там есть, может добавлю буст.

       

      Last edit: Teivaz 2015-08-27
  • andrey.simiklit

    andrey.simiklit - 2015-08-29

    Привет.

    Вобщем нашол еще одну проблемму пока разбирался с этой.
    Если изменить свойство Executable Prefix то у dSYM
    будет изменено название (у бинарника), при этом в info.plist (именно dSYM) нет ни единого поля
    с правильным названием файла (пример в SVN_SF\trunk\TestCases\Ticket_2 закомитил в транке).
    Решил искать в папке XXXXXXXX.app.dSYM\Contents\Resources\DWARF\ первый Mach-O по Magic Number. Это решение будет работать и для App. Этот функционал начинает работать только в случае если стандартное решение ничего не нашло, такчто только в некоторых случаях поис будет длиться дольше поскольку нужно читать все файлы в папке и проверять их заголовки.
    Для App можно сделать правильно с info.plist но это займет не мало времени т.к. нужно найти нормальную либу для парсинга binary plist + у xcode есть опция "Create Info.plist Section in Binary" тоесть нужно будет еще искать info.plist в какомто сегменте Mach-O (Executable) файла что тоже не быстро реализуеться.
    Так что решение с поиском первого Mach-O файа самое дешовое и надежное но не очень правильное, но пока оставлю его.
    Версию 1.2.13 я выложил, можешь проверить починилось ли это некорректное поведение.

    С уважением,
    Андрей.

     

    Last edit: andrey.simiklit 2015-08-29
  • Teivaz

    Teivaz - 2015-09-01

    Извини, я тут сильно занят на работе.
    Да, там как-то всё непросто с этим делом.
    Я потестил 1.2.13 на своём проблемном крешлоге, всё равно не работает пока.
    Как будет время я подебажу что там.

     
  • andrey.simiklit

    andrey.simiklit - 2015-09-04

    Привет.
    А ты не сможешь мне расшарить это проблемный dSYM и крешь лог (может через dropbox или google drive)?
    С уважением,
    Андрей.

     
  • Teivaz

    Teivaz - 2015-09-22

    Привет. Извини что долго не писал, всё времени не было. Я посмотрел внутрь этого дсима, крешлога и апликухи. Названия реально разные, там через плист не получится. У нас проект на анриале, а он там пересобирает бинарник как хочет, кроме того ещё куча самописных скриптов которые это дело туда-сюда копируют. В итоге имена совсем меняются.
    Но я нашел другое решение. Тебе оно должно понравиться.

    В крешлоге есть раздел Binary Images, в нём правильно указано название аппликухи и MD5 бинарника. контрольные суммы с дсимом совпадают, а имя, по которому мы будем искать строки для симболикейта можно брать отсюда же.
    Можно пойти даже дальше - взять эту область памяти и симболикейтить все адреса, которые в неё попадают.

    Binary Images:
    0x10005c000 - 0x102427fff RealBoxing2 arm64  <c3858a497cb33abaa3c278ce796780de> /var/mobile/Containers/Bundle/Application/2CCB249B-A3C7-40F3-9546-717885C13B93/RealBoxing2.app/RealBoxing2
    
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.