Xcode 16 warning about missing symbols of static framework

I work on an SDK, and one of the ways we distribute it is as a pre-compiled static XCFramework.

As far as I know, it’s the nature of a static framework to not contain symbols since the framework will be embedded in the final app binary, and the symbols should then be generated.

However, when testing the "Validate" function of the Xcode 16 deployment process, our users are receiving a warning that says the framework does not contain symbols.

Is my assumption about static frameworks and symbols incorrect? Could this be a bug in Xcode 16? Should we modify something in our framework to inform Xcode that symbols are not needed?

Answered by DTS Engineer in 806733022

This is a new warning in Xcode 16 where if you're missing a dSYM, Xcode lets you know in case you aren't expecting that — this is to reduce scenarios where you won't are able to fully symbolicating frames coming from your app's code in crash reports. In some cases, you may not have a dSYM, such as a closed source library from a vendor, and in those cases, the warning is safe to discard.

For those developing or using libraries that are statically linked, I was not able to reproduce this warning using either the example XCFramework attached in the bug reports noted in this thread, or by doing some simple testing with libraries that I know are popular in the iOS developer community and also statically linked. For the purposes of these tests, I'm creating a brand new Xcode project, adding the library through a Swift package, and making at least function call into the library so that it doesn't appear as dead code that can be eliminated as a release optimization. For these tests, the Xcode archive contains only the dSYM for the app, as the library code coming in from the XCFramework is merged into the main app's binary at link time, rather than it remaining as a separate dynamic library in the app, which would have a separate dSYM file. If you have a scenario with a straight forward test project set up using a statically linked library in an XCFramework that still unexpectedly gives you this warning about a missing dSYM file when uploaded, I'd like to see that project — please feel free to share a link to it so I can look at it further.

I also did some tests with some libraries popular among the iOS community that are dynamically linked and closed source (with no dSYM provided), and in those circumstances, I did receive the warning, but that warning is expected in that situation.

—Ed Ford,  DTS Engineer

@DTS Engineer Is a fix still being worked on ?

I tested this also on Xcode 16.1 Release Candidate (16B40) and it's the same issue.

Here are screenshots. I (and I assume also @paulb777) will be happy to help you figure this out.

Hello, I am facing the same issue "empty dSYM file detected, dSYM was created with an executable with no debug info.".

Can we please have an update? @DTS Engineer

I am able to reproduce this by just creating a new project and changing Debug Information Format to DWarf with dsym file.

Not able to use Crashylitics anymore. The issue started in Xcode 16.

FWIW, in another thread on the same issue, a user suggested going to Build Settings -> Build Options -> Debug Information Format, and changing the selection to DWARF only for both the debug and release build, and then change it back to DWARF with dSYM File. I haven't uploaded a new archive yet to test, but after making that change, the following lines are added to project.pbxproj. Given that DWARF with dSYM was originally selected and these lines were added only after changing to DWARF and back, it seems that XCODE 16+ fails to add those options to the project file

same warning

Xcode 16 warning about missing symbols of static framework
 
 
Q