Skip to content

Troubleshooting

About Crash Log Analysis

In Debug and Release modes during development, the thread backtrace captured during a Crash is symbolized. However, release packages do not include symbol tables, and the key backtrace of the exception thread will display the image name instead of being converted into valid code symbols. The relevant information obtained from the crash log is usually in hexadecimal memory addresses, which cannot directly locate the crash code. Therefore, it is necessary to parse the hexadecimal memory addresses into corresponding classes and methods.

How to Find the dSYM File After Compilation or Packaging

  • In Xcode, the dSYM file is typically generated alongside the compiled .app file and located in the same directory.
  • If the project has been archived, you can select Organizer from the Window menu in Xcode, then choose the corresponding archive file. Right-click the archive file and select Show in Finder. In Finder, locate the corresponding .xcarchive file. Right-click the .xcarchive file, select Show Package Contents, then navigate to the dSYMs folder to find the corresponding dSYM file.

Xcode Does Not Generate a dSYM File After Compilation

Xcode Release compilation generates dSYM files by default, while Debug compilation does not. The corresponding Xcode configuration is as follows:

Build Settings -> Code Generation -> Generate Debug Symbols -> Yes

Build Settings -> Build Option -> Debug Information Format -> DWARF with dSYM File

Include of non-modular header inside framework module

Because the SDK's .h file includes header files from dependent libraries, the following setting is required:

Set Target -> Build Settings -> CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES to YES.