0

我为客户开发了一个UWP 应用程序:当我们遇到一些我无法在我的设备上重现的错误时,我们实施了一个崩溃报告解决方案。

曲棍球应用程序

第一次,我像这样使用 HockeyApp 来使用崩溃报告:

HockeyClient.Current.Configure("xxxxxx",
  new TelemetryConfiguration() { EnableDiagnostics = true })
    .SetExceptionDescriptionLoader((Exception ex) =>
    {
      return "Exception HResult: " + ex.HResult.ToString();
    });

但是正如在另一个主题中解释的那样,报告了崩溃,但这并没有让我发现问题,因为我没有得到足够的细节

因此,正如有人建议的那样,我已将.pdb 文件从商店上传到 HockeyApp:但这次崩溃中的符号和.pdf 文件不匹配

我决定使用TrackEvent来分析问题。我通过添加对函数进行了一些测试:

Microsoft.HockeyApp.HockeyClient.Current.TrackTrace("MyViewModel - CheckUser()");

但是HockeyApp 中没有报告这些事件......

=> 你能解释一下吗?我忘了什么吗?我将在商店中发布一个新包并将 .pdb 文件重新上传到 HockeyApp,但我看不出我还能做什么......

应用中心

由于AppCenter现在可用于 UWP,因此我进行了相同的测试。我已经像这样实现了 AppCenter:

AppCenter.Start("xxxxxx-xxx"
  , typeof(Analytics)
  , typeof(Crashes));

但与 HockeyApp 不同的是,根本不报告崩溃。AppCenter 可以很好地识别应用程序,因为在启动应用程序时会在“崩溃”选项卡上添加一个带有当前版本号的条目。

我还添加了事件:

Analytics.TrackEvent("MyViewModel - CheckUser()");

但是这次事件在 AppCenter 中得到了很好的报告

=> 有没有人在 UWP 上使用 AppCenter 进行崩溃报告?还有什么要补充的吗?

结论

现在我必须使用 2 个工具,但这并不是很有帮助:

  • 用于崩溃报告的HockeyApp
  • 活动应用中心

=>您还有其他可以帮助我的建议或工具吗?

4

2 回答 2

0

我决定使用 TrackEvent 来分析问题...但是 HockeyApp 中没有报告事件...

如果要使用 TrackEvent,则需要使用 TrackEvent() API 而不是 TrackTrace()。

HockeyClient.Current.TrackEvent("Button Clicked");

您可以通过登录您的帐户 -> 单击应用程序 -> 事件来查看 HockeyApp 仪表板中的自定义事件。

请注意,自定义事件不会立即显示,通常需要大约 10-15 分钟。它也有限制。看这里

正如您所提到的,您需要将正确的 .pdb 文件上传到 HockeyApp 仪表板,然后将符号化崩溃。

您上传的应用似乎是商店版本。因此您需要从 Windows Dev Store 下载 .pdb 文件。看这里

您可以通过比较崩溃中的.pdb 的Id 和Binary Image 来检查它是否正确。例如, 两者都是 e5502c5ddc5748a899a8182d8a52a659,这意味着 .pdb 文件是正确的。我上传的符号崩溃的二进制图像

此外,为了获得象征性的崩溃,您需要确保您所做的崩溃来自商店版本(从 Windows 商店下载)。您不能使用 beta 版本或直接从 Visual Studio 中使用商店中的 .pdb 崩溃您的应用程序。

至于 AppCenter,它是下一代 HockeyApp,目前仍处于预览阶段。Windows 上的崩溃报告现在需要通过 Windows 应用商店分发应用程序,尚不支持侧载崩溃。你可以在这里参考官方文档。不过从长远来看它会取代HockeyApp,所以你可以等待App Center的正式发布。

于 2017-12-07T09:27:53.037 回答
0

我们也遇到了与您相同的问题,但好消息是,您现在也可以使用 AppCenter SDK 进行崩溃报告。https://docs.microsoft.com/en-us/appcenter/sdk/crashes/uwp。您完成它的方式应该适用于新版本的 NuGet:

AppCenter.Start("xxxxxx-xxx" , typeof(Analytics) , typeof(Crashes));

我用比以前更新的 NuGet 版本做了一个小测试,现在是 1.4,我正在测试

Crashes.GenerateTestCrash();

当您在以前的版本中尝试此操作时,智能感知器说它尚不适用于 UWP,但现在可以执行。

然而,在 AppCenter 门户中浏览测试崩溃时,显示“我们这边出了点问题”。这可能会“治愈”加班,但表明 App Center 中的崩溃报告确实仍在预览中。

我还建议使用 Application Insights 的导出功能来更深入地挖掘日志。

于 2018-02-22T16:29:24.197 回答