Symbols map program addresses to function names. They allow the Performance Reporting service to provide a native crash stack trace with human-readable function names, instead of just memory addresses. They can be contained within the executable itself, but are usually stored in a separate file to reduce executable size and make it more difficult to tamper with the executable.
Symbol files come in different formats depending on the operating system. Apple platforms use dSYM folders, Android symbols are stored in .so files, and Windows symbols are stored in .pdb files. The Performance Reporting service can identify and process all of these formats.
The Performance Reporting service works with two separate sets of symbols:
Symbol files have a universally unique identifier (UUID) or globally unique identifier (GUID) that must exactly match the ID of the executable. The Performance Reporting service generates the following errors if it cannot load a symbol file with an ID that matches a library or module:
<system symbols missing>
<symbols missing for uuid: xxx…>
The Performance Reporting service missing symbol file generates reports that appear in the Unity Services Dashboard under the Performance tab in the Reports section.
Reports where the system symbols are missing contain a line in the stack trace located in the Reports section of the Dashboard:
<symbols missing for uuid: xxx…>
Typically, the issue is that Unity does not have the symbols for that version of the operating system. For iOS and other Apple platforms, it can be difficult to obtain the symbols for older versions of the operating system. Unity has system symbol coverage on about 80% of iOS versions, starting from the iOS 7 family. Unity makes an effort to capture symbols for new iOS versions as soon as possible after they are released.
If you encounter this situation, you can check to see if you have similar crash reports for another version of the operating system. If you do, you might be able to resolve the issue by debugging it in that version of the operating system.
Reports where the application symbols are missing contain a line in the stack trace:
<symbols missing for uuid: xxx…>
When you build a project on which Performance Reporting is enabled, Unity generates a symbol file and uploads it to the Performance Reporting servers. If the process fails, the symbols missing message appears in the Services Dashboard.
To troubleshoot failures in the symbol upload, check the symbol_upload.log
file located in the same folder as the main Unity log. It should indicate which symbols were found and processed, along with any errors that occurred during processing and uploading of the symbols.
Did you find this page useful? Please give it a rating: