分析 iOS app 因 dSYM 文件导致的崩溃
您可以在 Instana 上查看 iOS app 崩溃的详细信息。 详细信息包括移动应用程序的所有活动线程的堆栈跟踪。 这些堆栈跟踪包含内存地址和原始函数名。 您可以使用 Instana 将堆栈跟踪转换为有意义的信息。
要编译数据, Instana 需要来自 iOS app 的调试符号( dSYM )文件。 dSYM 文件用于符号化。 符号化 是将活动内存地址转换为人类可读格式的过程。
要翻译堆栈跟踪信息,请将 dSYM 文件上传至 Instana。 您可以通过调用 Web REST API 来上传 dSYM 文件。 文件 dSYM 上传完成后, Instana 界面将显示有关崩溃的更多详细信息。 要查看详细信息,请在 崩溃 选项卡上单击 崩溃的线程 。 有关更多信息,请参阅 崩溃。
上传 dSYM 文件
在上传文件 dSYM 之前,请确保满足以下先决条件:
- 已创建一个 API 令牌,并启用了用于移动应用监控的配置权限。 如需了解更多信息,请参阅 API Tokens。
- 源地图会存储在自托管的自定义版本中( Kubernetes 或 Red Hat OpenShift Container Platform )。 如需更多信息,请参阅 “配置外部存储 ”。
- 请确保您上传的文件
dSYM与当前应用版本相符。 例如,每次更新应用时,您都必须上传更新后的dSYM文件。
要将 dSYM 文件上传至 Instana ,请按照以下步骤操作:
在 Instana 界面中,创建一个配置以上传该
dSYM文件:Go 前往 “网站与移动应用” > “移动应用 ”。
单击移动应用程序。 这样会显示移动应用程序仪表板。
单击 配置 > 堆栈跟踪转换。
图 1. 符号文件上传配置视图 
单击 添加配置。 此时将显示 "新建符号文件上载配置" 对话框。
在 描述 字段中,输入上载的描述。
单击创建。 此时将显示 "编辑符号文件上载配置" 对话框。 使用对话框中显示的 Web REST API 来上载
dSYM文件。 请参阅步骤 3。单击保存。 将保存配置。
注意: 每个移动应用最多可上传 1,024 组源地图配置。 每个移动应用的源映射配置最大存储空间为 2,048 MB。 如需提高此限制,请联系 Instana 客服。将
dSYM文件压缩到.tgz文件中:tar czf <archive name>.tgz <files or locations>以下片段中显示了该命令的示例:
tar czf your_app.dSYM.tgz your_app.dSYM_folder如果压缩文件大小超过 10 MB ,请将
.tgz文件拆分为多个 BLOB (每个 9 MB):split -b 9m <archive name>.tgz <file>.tgz_blob_以下片段中显示了该命令的示例:
split -b 9m your_dSYM_file.tgz your_dSYM_file.tgz_blob_请通过 Instana 网站 REST API 上传文件。 请完成下列其中一个步骤:
如果上载包含多个 BLOB ,请运行:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \ -F 'fileType="dSYM"' \ -F 'blobIndex=1' \ -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'注:blobIndex 从 1 开始,而不是从 0 开始。 对于每个后续的斑块,将 blobIndex 增加1。如果上载仅包含一个文件,请运行:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/form' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \ -F 'fileType="dSYM"' \ -F 'sourceMap=@"$LOCAL_SYMBOLFILE_LOCATION"'如果压缩文件的大小超过 10 MB ,那么将显示错误消息
request entity too large。 请参阅步骤 3。
落实上载:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/commit' \ -H 'authorization: apiToken $API_TOKEN' \ -F 'fileId="$BUNDLE_IDENTIFIER_OF_APP, for example com.instana.ios.testapp1"' \ -F 'fileType="dSYM"'
在执行提交命令之前,请先上传所有二进制大对象。 您可以在 Instana 用户界面中查看每个源映射已上传的Blob数量。 对于不使用聚合的源地图,聚合数显示为 1。
Success。从 Instana 中删除文件 dSYM
要从 Instana 中删除文件 dSYM ,请执行以下任一操作:
Go 转到 “网站与移动应用 ” > “移动应用 ” > “配置” > “堆栈跟踪转换 ”,然后点击该配置旁边的 “删除 ”图标。
调用 Web REST API 方法。 以下示例中显示了样本命令:
curl -L -X PUT \ 'https://$UNIT-$TENANT.instana.io/api/mobile-app-monitoring/config/$MOBILE_APP_ID/sourcemap-upload/$UPLOAD_CONFIG_ID/clear' \ -H 'authorization: apiToken $API_TOKEN'