iOS App Store Debug Symbols Not Generating

Hey, sorry for the delay. It appears I was mistaken. It looked for a while like symbols were generating on the App Store (when using the “Include bitcode” upload option), but when we went to actually view crash reports, they wouldn’t symbolicate correctly - all function names were hidden. Not very helpful, of course.

We’ve been able to get the following working for builds using the “Include bitcode” option, but it’s still not ideal for several reasons, namely:

  1. It requires a bit of extra work (ok, not so big of a deal)
  2. It doesn’t correctly symbolicate App Extension (such as AUv3) stack traces, just Standalone apps (ok, big deal in our case)

If you want to use bitcode, you can do the following:

  1. Create an archive for the target all-generic iOS device and open it up in Finder (right-click the archive in the Xcode Organizer window)
  2. Create a directory called BCSymbolMaps in the archive, and then copy in the two *.bcsymbol maps from the MacOSX/Build/Release directory
  3. Upload the archive to the App Store with both “Include bitcode” and “Upload symbols” checked. When you view the build on App Store Connect, you should see that it “Includes Symbols” and has a link to “Download dSYMs”. These will symbolicate your crash reports, but again, only for Standalone App builds.

If you want to symbolicate for App Extensions such as AUv3, then it appears you have to do the following:

  1. Make sure that Xcode is generating dSYMs. Open the project file in Projucer and add this to Exporters/iOS/Release/Custom Xcode Flags: DEBUG_INFORMATION_FORMAT=dwarf-with-dsym, GCC_GENERATE_DEBUGGING_SYMBOLS=YES. Now save and reopen the project in Xcode and make sure that Debug Information Format is showing DWARF with dSYM file for the release build of all targets
  2. Create an archive for the target all-generic iOS device and open it up in Finder (right-click the archive in the Xcode Organizer window)
  3. Copy both dSYMs packages from the MacOSX/Build/Release directory into the dSYM directory in the newly built archive
  4. Upload the archive to AppStore connect, with “Include bitcode” disabled and “Upload symbols” enabled. Xcode should now automatically symbolicate crash reports

These approaches should work on an out-of-the-box Projucer project, at least on JUCE 5.4.3.

BTW, you shouldn’t need to wait the 2ish days for App Store approval - you can use TestFlight to do the testing right away, after uploading the build. This makes the testing process much quicker.

(Credit goes to my colleague Steve, for doing most of the investigation on this)

10 Likes