# 上传符号文件

> Manually upload application symbol files to improve crash report symbolication and readability.

原生崩溃报告可能包含符号缺失问题。如果项目中符号缺失，您可以手动将应用程序符号文件添加到项目中。这将有助于更好地诊断和解决问题。

如果崩溃和异常报告包含符号缺失问题，请从 Cloud Diagnostics Dashboard（后台）添加应用程序符号文件。


**Frame:**
![](/api/media?file=/cloud-diagnostics/media/images/debugging-symbolspageemptystate.png)

要上传符号，请执行以下操作：

1. 打开 [Unity Dashboard（Unity 后台）](https://dashboard.unity3d.com/)。
2. 选择启用了 Cloud Diagnostics 的项目。
3. 从左侧导航栏中，选择 **Cloud Diagnostics** > **Debugging Symbols（调试符号）**。
4. 从 Debugging Symbols（调试符号）页面上，选择 **Upload symbols（上传符号）**，然后从电脑上选择所需的文件。

上传新的符号后，需要经过短暂等待，新的符号才能正常使用。请等待至少五分钟，然后再提交新的崩溃。处理完成后，任何新报告都应该以正确的符号化生成。

## 查找并上传缺失的 iOS/OSX 应用程序符号##finding-and-uploading-missing-iososx-application-symbols

使用 Xcode 编译应用程序时，iOS/OSX 会将符号存放在 dSYM 文件夹中，文件夹名称为以下格式：

```cpp
~/Library/Developer/Xcode/DerivedData/<build id>;/Build/Products/<build type>/appname.dSYM
```

dSYM 文件是一种 ELF 文件，其中包含应用程序的 DWARF（带有属性记录格式的调试）调试信息。DWARF 是一种支持源代码级调试的调试文件格式。

要验证 dSYM 文件是否包含正确的 UUID，请运行 `dwarfdump` 命令，并将 `appname` 替换为应用程序的 dSYM 文件的名称：

```cpp
dwarfdump -u appname.dSYM/Contents/Resources/DWARF/appname
```

下面显示了 `dwarfdump` 的示例输出：

`UUID: 5EEDCCD2-38E7-3E52-81EC-B90C7BCD6D91 (armv7) appname.dSYM/Contents/Resources/DWARF/appname`

`UUID: 583173FD-6697-3E3C-90DC-EA9147563A5B (arm64) appname.dSYM/Contents/Resources/DWARF/appname`

\*\*注意：\*\*Dwarfdump 是一个以人类可读格式打印 DWARF 信息的应用程序。dwarfdump 的输出会以大写字母和破折号显示 UUID。UUID 通常以全小写字母且没有破折号的形式显示。这两种格式都可以表示 UUID。例如，`5EEDCCD2-38E7-3E52-81EC-B90C7BCD6D91` 和 `5eedccd238e73e5281ecb90c7bcd6d91` 表示相同的 UUID。

找到正确的 dSYM 文件夹后，将整个文件夹压缩，并使用 Unity Dashboard（Unity 后台）上的 \*\*Debugging Symbols（调试符号）\*\*选项卡将其上传到 Cloud Diagnostics 服务。

## iOS、Bitcode 和 App Store##ios-bitcode-and-the-app-store

当您在启用了 Bitcode 的情况下构建 iOS 应用程序并将其提交到 App Store 时，Apple 会对您的构建版本进行后处理并创建一个新的二进制文件。新的二进制文件具有新的 UUID 和相应的新 dSYM。在这种情况下，您必须从 iTunes Connect 下载 dSYM 文件。进入 iTunes Connect，选择 **My Apps（我的应用程序）**> **Activity（活动）** > **All Builds（所有构建版本）**>**（选择您的构建版本）**，即可找到此文件。

将应用程序上传到 App Store 中时，选中 \*\*Include bitcode for iOS content（包含 iOS 内容的 bitcode）\*\*和 **Upload your app’s symbols to receive symbolicated reports from Apple（上传应用程序的符号以从 Apple 收到符号化的报告）**，以让 App Store 使用正确的符号生成新的 dSYM 文件：

下载新的 dSYM 文件后，使用 dwarfdump 验证 UUID 正确无误。将该文件压缩，然后通过 \*\*Debugging Symbols（调试符号）\*\*选项卡将其上传到 Cloud Diagnostics 服务。

有关符号化的更多信息，请参阅 Apple Developer 网站上的 [符号崩溃报告 (Symbolicating Crash Reports)](https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATION)。

\*\*注意：\*\*当您上传新的 dSYM lD 时，报告不会重新符号化。您必须提交一个新的崩溃，才能使用新的符号生成报告。
