swift - iOS 8 - Unable to symbolicate symbols coming from custom dynamic framework -


here have: - ios app called vacationspots (.app file)

  • app dsym file

  • dynamic framework named vsutilities (.framework file)

  • dynamic framework dsym file

here sample project source code: https://www.dropbox.com/s/nl32xlk98lnl1mv/vacationspots.zip?dl=0

i made app crash @ launch force unwrapping nil optional.

below part of symbolicated crash report. notice vsutilities calls not symbolicated:

thread 0 name:  dispatch queue: com.apple.main-thread thread 0 crashed: 0   libswiftcore.dylib              0x00333470 0x1d1000 + 1451120 1   vsutilities                     0x001c0bd8 0x1b9000 + 31704 2   vacationspots                   0x0007a418 spotsviewcontroller.awakefromnib() -> () (spotsviewcontroller.swift:38) 3   vacationspots                   0x0007a4b8 @objc spotsviewcontroller.awakefromnib() -> () (spotsviewcontroller.swift:0) 4   uikit                           0x2940036a -[uinib instantiatewithowner:options:] + 1910 5   uikit                           0x29641818 -[uistoryboard instantiateviewcontrollerwithidentifier:] + 196 6   uikit                           0x2964197a -[uistoryboard instantiateinitialviewcontroller] + 58 7   uikit                           0x291f8ea0 -[uiapplication _loadmainstoryboardfilenamed:bundle:] + 84 8   uikit                           0x28fccebc -[uiapplication _loadmaininterfacefile] + 260 9   uikit                           0x291f7d80 -[uiapplication _runwithmainscene:transitioncontext:completion:] + 1256 10  uikit                           0x2920bb9c __84-[uiapplication _handleapplicationactivationwithscene:transitioncontext:completion:]_block_invoke3228 + 36 11  uikit                           0x291f53aa -[uiapplication workspacedidendtransaction:] + 134 12  frontboardservices              0x26100c7e -[fbsserialqueue _performnext] + 230 13  frontboardservices              0x26100f70 -[fbsserialqueue _performnextfromrunloopsource] + 48 14  corefoundation                  0x24ddf68e __cfrunloop_is_calling_out_to_a_source0_perform_function__ + 14 15  corefoundation                  0x24ddf27c __cfrunloopdosources0 + 452 16  corefoundation                  0x24ddd5ea __cfrunlooprun + 794 17  corefoundation                  0x24d30bf8 cfrunlooprunspecific + 520 18  corefoundation                  0x24d309e4 cfrunloopruninmode + 108 19  uikit                           0x28fc65bc -[uiapplication _run] + 524 20  uikit                           0x28fc0ba0 uiapplicationmain + 144 21  vacationspots                   0x00081d4c main (appdelegate.swift:26) 22  libdyld.dylib                   0x249df872 start + 2 

here part of symbolicatecrash command output:

finding symbols: .fetching symbol file vsutilities--[undef]  searching []...-- no match searching in spotlight dsym uuid of 9acae8d3326233adaaea24609e951306 running mdfind "com_apple_xcode_dsym_uuids == 9acae8d3-3262-33ad-aaea-24609e951306" running mdls -name com_apple_xcode_dsym_paths \/users\/maxkorytko\/library\/developer\/xcode\/deriveddata\/vacationspots\-citeoysntsbhwwfzcqytfuzhnqze\/build\/products\/debug\-iphoneos\/vsutilities\.framework\.dsym @dsym_paths = ( /users/maxkorytko/library/developer/xcode/deriveddata/vacationspots-citeoysntsbhwwfzcqytfuzhnqze/build/products/debug-iphoneos/vsutilities.framework.dsym/contents/resources/dwarf/vsutilities ) @exec_names = ( vsutilities ) running mdfind "kmditemcontenttype == com.apple.application-bundle && (kmditemalternatenames == 'vsutilities.app' || kmditemdisplayname == 'vsutilities' || kmditemdisplayname == 'vsutilities.app')" running mdfind "kmditemcontenttype == public.unix-executable && kmditemdisplayname == 'vsutilities'" did not find executable dsym ## warning: can't find unstripped binary matches version of /var/mobile/containers/bundle/application/be14c237-9798-4030-9806-11f3386a0077/vacationspots.app/frameworks/vsutilities.framework/vsutilities  ..fetching symbol file vacationspots--[undef]  searching []...-- no match searching in spotlight dsym uuid of d2731d399b5132329532fea91df1ca19 running mdfind "com_apple_xcode_dsym_uuids == d2731d39-9b51-3232-9532-fea91df1ca19" running mdls -name com_apple_xcode_dsym_paths \/users\/maxkorytko\/library\/developer\/xcode\/deriveddata\/vacationspots\-citeoysntsbhwwfzcqytfuzhnqze\/build\/products\/debug\-iphoneos\/vacationspots\.app\.dsym @dsym_paths = ( /users/maxkorytko/library/developer/xcode/deriveddata/vacationspots-citeoysntsbhwwfzcqytfuzhnqze/build/products/debug-iphoneos/vacationspots.app.dsym/contents/resources/dwarf/vacationspots ) @exec_names = ( vacationspots ) running mdfind "kmditemcontenttype == com.apple.application-bundle && (kmditemalternatenames == 'vacationspots.app' || kmditemdisplayname == 'vacationspots' || kmditemdisplayname == 'vacationspots.app')" running mdfind "kmditemcontenttype == public.unix-executable && kmditemdisplayname == 'vacationspots'" running /applications/xcode.app/contents/developer/toolchains/xcodedefault.xctoolchain/usr/bin/lipo -info '/users/maxkorytko/library/developer/xcode/deriveddata/vacationspots-citeoysntsbhwwfzcqytfuzhnqze/build/products/debug-iphoneos/vacationspots.app/vacationspots' running /applications/xcode.app/contents/developer/toolchains/xcodedefault.xctoolchain/usr/bin/otool -arch armv7 -l '/users/maxkorytko/library/developer/xcode/deriveddata/vacationspots-citeoysntsbhwwfzcqytfuzhnqze/build/products/debug-iphoneos/vacationspots.app/vacationspots'  number of symbols in /users/maxkorytko/library/developer/xcode/deriveddata/vacationspots-citeoysntsbhwwfzcqytfuzhnqze/build/products/debug-iphoneos/vacationspots.app/vacationspots: 335 + 2081 = 2416 found executable /users/maxkorytko/library/developer/xcode/deriveddata/vacationspots-citeoysntsbhwwfzcqytfuzhnqze/build/products/debug-iphoneos/vacationspots.app/vacationspots -- match 

faced similar today. there 2 problems in case:

  1. .framework inside .app not "indexed enough"/get metadata mdfind, kmditemdisplayname, unless moved out of .app.

  2. symbolicatecrash using mdfind "kmditemcontenttype == public.unix-executable", while real kmditemcontenttype framework executable "public.data".

solved by:

  1. moving .framework out of .app (in case moved stuff desktop, sure indexed correctly)

  2. modifying (copy of) symbolicatecrash not "kmditemcontenttype == public.unix-executable" "kmditemcontenttype == public.data"

p.s. can use mdls indexed metadata attributes of file:

macbook-pro-ge:~ eg$ mdls -name kmditemcontenttype ~/desktop/opasappkit.framework/opasappkit kmditemcontenttype = "public.data"

as modified version of symbolicatecrash, i'm not sure whether can post here is, here's diff, there's single line that's changed.

https://gist.githubusercontent.com/grigorye/25dbfe64e6d91db21817/raw/6e33f1d77abca6ffc022bedefcd5a5f1d1bc308f/symbolicatecrash-publicdata.diff

btw, looks xcode uses symbolicatecrash symbolicating well, patching script inside xcode allowed me symbolicate crashes custom dynamic frameworks there too.


Comments

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -