gpt4 book ai didi

uwp - 如何获取转换后的 Windows 应用商店 UWP 应用的故障转储(或任何可用的故障报告)?

转载 作者:行者123 更新时间:2023-12-02 03:08:00 24 4
gpt4 key购买 nike

我向 Windows 10 商店提交了我的 native Win32 应用程序是 converted to UWP应用程序使用 Project Centennial转换器。该应用程序通过了商店认证,可通过私有(private)链接获得(在我测试时)。

在运行我的测试时,应用程序挂断并崩溃了一次。所以我试图检索任何可用的故障转储来诊断问题。

我登录了Windows Dev account ,然后转到我的Dashboard果然,该应用程序显示了一次崩溃:

enter image description here

然后我点击了它。新Health页面显示了崩溃发生的时间、市场等。(那些不能帮助我调试问题的东西。)

然后在底部我看到了这个:

enter image description here

我点击了蓝色链接,上面写着 MOAPPLICATION_HANG_它打开了Failure details window 。然后,如果我一直向下滚动(命中图的过去日期和时间),我会看到:

enter image description here

好的。堆栈跟踪不是我所期望的,但我会看看。

所以如果我点击stack trace ,我得到这个弹出:

enter image description here

然后,如果我点击下载,我会得到一个小文本文件 stackTrace.tsv (117 字节),字面上有这个:

enter image description here

有没有办法检索功能 mini-dump .dmp file我可以在 Visual Studio C++ 项目中使用 native 来分析此崩溃调试器?

最佳答案

编辑:我想指出以下内容似乎不再适用于更新后的 Windows 应用商店。现在,如果一个人去 App -> Analytics -> Health 崩溃可能看起来像这样:

enter image description here

然后微软提供了这个小花絮:

enter image description here

这些都没有给我任何有用的信息来定位崩溃,就像以前一样(见下文。)我显然不想用 .pdb 发布我的应用程序。文件或符号,就像上面建议的那样。

因此,如果有人找到可行的解决方案,我很想知道...

你知道,我应该感谢微软实际上从 UWP 应用程序崩溃中实现了堆栈跟踪收集。我在我的 Windows Store Win32/UWP 应用程序中得到了实际的崩溃,这就是我如何利用它来找到潜在的错误。

首先,当您登录您的dashboard ,检查应用列表,看看是否有任何崩溃:

enter image description here

如果是这样,请单击该数字/链接并一直向下滚动到详细说明 Failures 的位置.就我而言,这是一个看起来像这样的崩溃:

enter image description here

单击它,将弹出另一个窗口。向下滚动到 Failure Log :

enter image description here

它会显示崩溃发生的时间、应用程序的版本、它发生在什么设备上(这非常好!),然后有一个堆栈跟踪的链接。所以点击它:

enter image description here

这就是崩溃时我的实际堆栈跟踪的样子。由于该人的计算机在我的可执行文件中没有符号(.pdb 文件),因此我的应用程序中的所有方法都显示为空白偏移。

以下是如何找到崩溃的实际位置:

使用崩溃文件的精确副本恢复您的 Visual Studio 解决方案。 (我假设您在将解决方案的 release 构建以及 .exe.pdb 文件上传到 Windows 应用商店之前将其存档。)

启动Visual Studio,打开崩溃应用的版本,切换到Release配置和disable builds . (这部分很重要,因为否则 Visual Studio 会在您开始调试之前尝试构建您的项目,这可能会弄乱您从堆栈跟踪中获得的函数偏移量!)

然后在第一个构造函数中的某处放置一个断点,该构造函数将立即与您的应用程序一起加载。您需要确保它在崩溃之前触发。

开始调试(命中 F5)并等待断点命中。然后显示Modules Pane ( Ctrl + Alt + U )并找到您的可执行文件并获取其基地址:

enter image description here

就我而言,它是 0xD0000 .然后切换到反汇编( Alt + 8 )并在 Address 中输入您的基地址 + 来自上面堆栈跟踪的崩溃偏移量拆卸窗口顶部的栏。我的情况是:

0xD0000+0x1D500

enter image description here

并点击 Enter在代码中显示位置。这将向您显示崩溃发生的位置。就我而言,它是这一行:

enter image description here

那么这一切都取决于你的调试技巧。就我而言,这很容易看出—— nRow索引超出范围。所以修复这个错误非常简单。

再次,我要感谢 Microsoft 提供这样的功能。我不知道上面显示的错误,如果我试图在简单的最终用户报告之后发现应用程序崩溃的原因,我会感到非常难过。

PS。最后,我认为在我的第一个示例中没有收集堆栈跟踪的原因是因为应用程序已挂起。所以在这种情况下,调试信息可能不会被收集。 (此时只是猜测。)

关于uwp - 如何获取转换后的 Windows 应用商店 UWP 应用的故障转储(或任何可用的故障报告)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com