Windows 支持

App Center UWP、WPF 和 WinForms 应用程序的诊断。 本部分介绍作为 2.5.0 SDK 版本一部分的 UWP 应用的新体验。 有关 WPF 和 WinForms 应用程序的信息,请参阅诊断功能和 WPF/WinForms SDK。

通用 Windows 平台

App Center支持使用 2.5.0 SDK 或更高版本的旁加载和 Windows 应用商店 UWP 应用的完整诊断功能集。 若要App Center UWP 应用启用诊断,请App Center UWP SDK 文档集成 App Center SDK。 可以在诊断功能文档 中详细了解 完整的功能集

新的诊断体验

随着 2019 年 10 月发布的 2.5.0 SDK,App Center发布了新的诊断体验。 本部分详细介绍了新版本的改进和过渡体验。

进行了哪些改进?

新的和改进的诊断体验包括以下新增功能:

  • 一种完整的符号化体验,可让你在 App Center。 有关详细信息,请参阅下面的符号部分。
  • 支持已处理的异常
  • 每个崩溃或错误组受影响的用户数
  • 能够按崩溃或错误组添加批注
  • 能够将崩溃和错误组标记为打开、关闭或忽略
  • 能够下载崩溃和错误报告
  • 能够将一个二进制文件和一个文本附件附加、查看和下载到你的故障报告
  • 崩溃和错误报告每个崩溃实例的详细信息,包括应用程序的启动时间、崩溃时间以及设备使用的国家/地区和语言

可以在 App Center 诊断文档中了解有关每项功能的详细信息。

什么是转换体验?

更新到 App Center UWP SDK 版本2.5.0 后,将在新的、改进的 UI 中看到崩溃和错误数据进入 App Center 诊断门户。 对于在新的诊断 UI 中显示的故障和错误数据,需要使用 " 错误" 部分下列出的 api。 详细了解旧的崩溃 Api 如何映射到 API 转换文档中的新错误 api。

带符号化

UWP 崩溃报表显示导致崩溃的线程的堆栈跟踪。 当应用程序使用 .NET Native (通常在发布版本中) ,堆栈跟踪可能包含读取和了解崩溃所需的内存地址,而不是类名、方法、文件名和行号。

Unsymbolicated 崩溃

"诊断"部分会显示未App Center崩溃,因此即使在上传符号之前,也可以查看一些详细信息。 这些崩溃中缺少的符号将显示在"未收缩"选项卡中。如果上传了缺少的符号,则无符号故障组将替换为符号化崩溃组。

上载符号

若要获取已转换的内存地址,需要将 .appxsym 文件上载到 App Center,其中包含带符号化所需的所有信息。

在本地生成符号

若要获取 .appxsym 文件,必须创建应用程序捆绑包,如下所述。 创建捆绑包后,可以在 .appxsym 应用捆绑包文件夹内找到符号文件作为文件。

App Center 生成中内置的应用程序的符号

App Center 生成和分发服务可以自动生成有效的符号文件并上载到诊断服务。 如果使用 App Center 生成应用并将其自动分发给最终用户,则无需手动获取并将符号文件上传到 App Center。

发布到 Microsoft Store 的应用程序的符号

将应用程序发布到存储时,.NET Native服务器端进行编译。 因此,需要从合作伙伴中心。

  1. 在列表中找到应用程序,然后单击它。
  2. 左侧面板中 展开"产品管理"菜单。
  3. 单击"管理包"。
  4. 单击 右上角的"显示包",查看要 (的) 版本。
  5. 找到需要其符号的版本包,然后单击所有受支持的体系结构的链接以下载所有符号 (例如下载 Windows 10 符号文件 (x64) 链接) 。

App Center门户

  1. 登录到 App Center 并选择应用。
  2. 在左侧菜单中,导航到 " 诊断 " 部分,然后选择 " 符号"。
  3. 在右上角,单击 " 上载符号 " 并上传文件。
  4. App Center 对符号进行索引后,将会为您符号化崩溃。

App Center API

通过 API 上传符号的过程涉及一系列三个 API 调用:一次在后端分配空间,一次用于上传文件,另一次用于更新上传状态。 第一个 API 调用的正文应设置为 symbol_type UWP

  1. 触发 POSTsymbol_uploads API的请求。 此调用在文件后端为文件分配空间,并返回 symbol_upload_idupload_url 属性。
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. 使用 upload_url 第一步中返回的属性,发出 PUT 带有标头的请求: "x-ms-blob-type: BlockBlob" 并提供文件在磁盘上的位置。 此调用会将文件上传到后端存储帐户。 了解有关 放置 Blob 请求标头 的详细信息。
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. PATCH使用第一步中返回的属性向symbol_uploads API发出请求 symbol_upload_id 。 在请求正文中,指定是要将上传的状态设置 (为 "已 committed 成功完成") 上载过程,还是 ("未 aborted 成功完成) "。
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

备注

符号上载 API 不适用于大小超过256MB 的文件。 使用 App Center CLI 上传这些文件。 可以按照我们的 APP CENTER cli存储库中的说明安装 App Center CLI。

App Center CLI

还可使用 CLI 上传符号文件:

appcenter crashes upload-symbols --appxsym {symbol file}

忽略符号

如果 App Center 没有所有符号文件来完全标志崩溃报告,则故障将列在 " Unsymbolicated " 选项卡中。如果有权访问所需的符号,可以从此页上传这些符号。

如果无法上载符号,可以通过选择表中的行并单击 "忽略版本" 按钮,将其标记为已 忽略。 此按钮指示 App Center 处理崩溃,并使其尽可能完全地处理文件中的符号标志。 完成处理后,它们将出现在部分符号化的 " 崩溃 " 选项卡中。 也依赖于标记为 "已忽略" 的相同符号 Id 的新崩溃将绕过 Unsymbolicated 的选项卡,因为它们进入并流过系统。

WinRT、Silverlight 和其他平台

App Center UWP、WPF 和 WinForms 之外,不支持任何其他 Windows 平台。 如果 Windows 应用发生本机 C++ 崩溃,可以通过上传崩溃 API App Center 这些崩溃上传到应用