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

Capture and play voice with Asterisk ARI -

java - Why database contraints in HSQLDB are only checked during a commit when using transactions in Hibernate? -

visual studio - Installing Packages through Nuget - "Central Directory corrupt" -