Crash logs are not symbolicated in the Mobile Analysis console

更新时间:
复制 MD 格式

Crash logs from iOS apps appear as raw memory addresses in the Mobile Analysis console when the symbol table is missing or mismatched. Upload the correct dSYM file to symbolicate them.

Mobile Analysis lets you upload crash logs to monitor client-side crashes. For Android apps, crash log call stacks are automatically symbolicated during upload, so you can directly locate the crash point. For iOS apps, you must upload a symbol table in the console.

Before resolving this issue, understand what a symbol table is and why it is needed.

  • What is a symbol table?

    A symbol table maps memory addresses to function names and line numbers in your code.

  • Why is a symbol table needed?

    iOS crash logs record call stack information as memory addresses, so you cannot directly view which code caused a crash. The mPaaS server uses a symbol table to symbolicate the program stack from iOS crash logs. For example:

    Before parsing:

      18  NebulaTest                        0x00000001030f6b7c 0x104ad4000 + 9282380
      19  NebulaTest                        0x00000001030f6ed4 0x104ad4000 + 9283236
      20  NebulaTest                        0x00000001030f6d0c 0x104ad4000 + 9282780
      21  NebulaTest                        0x00000001030f6ed4 0x104ad4000 + 9283236
      22  NebulaTest                        0x00000001030f6d0c 0x104ad4000 + 9282780

    After parsing:

      18  NebulaTest                        0x00000001030f6b7c -[DTJsonEncoder encodeObject:ofClass:recusive:] + 424
      19  NebulaTest                        0x00000001030f6ed4 -[DTJsonEncoder encodeObject:] + 280
      20  NebulaTest                        0x00000001030f6d0c -[DTJsonEncoder encodeObject:ofClass:recusive:] + 824
      21  NebulaTest                        0x00000001030f6ed4 -[DTJsonEncoder encodeObject:] + 280
      22  NebulaTest                        0x00000001030f6d0c -[DTJsonEncoder encodeObject:ofClass:recusive:] + 824

Get the dSYM symbol table file from an iOS project

By default, Xcode generates a dSYM file in Release build mode. In Debug build mode, configure the following settings:

  1. In your iOS project, go to Build Settings > Code Generation and set Generate Debug Symbols to Yes. 编译1

  2. Go to Build Settings > Build Option and set Debug Information Format to DWARF with dSYM File.编译2

    After the build succeeds, open the folder where the app is located:

    编译成功

    The dSYM symbol table file is generated in the same folder:

    符号表文件

Upload the symbol table through the mPaaS console

After you publish the app to the App Store, create a publishing task for the corresponding version in the mPaaS console and upload the matching symbol table file.

Once configured correctly, all crash logs from this version appear as symbolicated logs in the mPaaS console.

Note

If you have uploaded the symbol table for your iOS project but the crash logs are still not symbolicated, verify locally that the symbol table can be used to manually symbolicate the crash logs.

If a crash log is incompletely or incorrectly symbolicated, verify that the symbol table exactly matches the app version. Back up the dSYM symbol table files for each published version to prevent them from being lost.