symbolicatecrash не работает с dSYM, но работает 'atos'

Извините меня! Есть проблема, запутайте меня!

У меня есть Myapp.app.dSYM. (Все символы удалены из MyApp.app и скопированы в dSYM)

Теперь я использую инструмент symbolicatecrash для обозначения сбоев, он не работает! Шестнадцатеричный адрес все еще существует.

Часть моего журнала сбоев:

......
11  MyApp                              0x00000001010ac2c8 0x100070000 + 17023688
12  MyApp                              0x00000001010b1168 0x100070000 + 17043816
13  MyApp                              0x00000001010b10e0 0x100070000 + 17043680
......

Поэтому я стараюсь использовать:

atos -arch arm64 -o MyApp.app.dSYM/Contents/Resources/DWARF/MyApp -l 0x100070000 0x00000001010b1168

и это работа! Символизируется!

Связанный символьный журнал может помочь:

.................fetching symbol file for MyApp--[undef]

Searching []...-- NO MATCH

Searching in Spotlight for dsym with UUID of 3e8efaf1440131ea99e585fb394a50ea

Running mdfind "com_apple_xcode_dsym_uuids == 3E8EFAF1-4401-31EA-99E5-85FB394A50EA"

Running mdls -name com_apple_xcode_dsym_paths \/Users\/jenkinsslave\/Documents\/CrashSpider\/dSYM\/com\.xxxxxx\.iphoneclient\/50037\/dsym\/MyApp\.app\.dSYM

@dsym_paths = ( /Users/jenkinsslave/Documents/CrashSpider/dSYM/com.xxxxxx.iphoneclient/50037/dsym/MyApp.app.dSYM/Contents/Resources/DWARF/MyApp )

@exec_names = ( MyApp )

Running mdfind "kMDItemContentType == com.apple.application-bundle && (kMDItemAlternateNames == 'MyApp.app' || kMDItemDisplayName == 'MyApp' || kMDItemDisplayName == 'MyApp.app')"

Running mdfind "kMDItemContentType == public.unix-executable && kMDItemDisplayName == 'MyApp'"

Did not find executable for dsym

## Warning: Can't find any unstripped binary that matches version of /private/var/mobile/Containers/Bundle/Application/EA730613-BB85-401F-AAF1-D1436CE22EA6/MyApp.app/MyApp

У меня вопрос:

  1. Если dSYM содержит символы отладки, зачем ему исполняемый двоичный файл?

  2. Почему я могу использовать символы вручную, но не Xcode?

Тс!


person Denis    schedule 17.04.2015    source источник


Ответы (1)


symbolicatecrash - это сценарий Perl, который внутренне вызывает atos.

Вы можете получить код со страницы https://github.com/bitstadium/QuincyKit/blob/develop/server/local/symbolicatecrash.pl (или каталог установки XCode).

Скопируйте его куда-нибудь и отредактируйте, чтобы изменить строку:

print STDERR "Did not find executable for dsym\n" if $opt{v};
return undef;

Измените undef на /path/to/your.app.dSYM/Contents/Resources/DWARF/YourAppName

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

person kargeor    schedule 21.04.2015
comment
Большое спасибо! Это действительно сработало! Теперь я могу сделать что-нибудь еще, изменив этот файл сценария. - person Denis; 01.05.2015