如何为转换后的Windows应用商店UWP应用程序获取崩溃转储(或任何可用的崩溃报告)?
我向Windows 10应用商店提交了我的如何为转换后的Windows应用商店UWP应用程序获取崩溃转储(或任何可用的崩溃报告)?,uwp,windows-store-apps,windows-store,desktop-bridge,Uwp,Windows Store Apps,Windows Store,Desktop Bridge,我向Windows 10应用商店提交了我的nativeWin32应用程序,该应用程序使用Project Centennialconverter。该应用程序通过了商店认证,可通过私人链接使用(我正在测试它) 在运行我的测试时,应用程序挂起并崩溃了一次。因此,我试图检索任何可用的崩溃转储来诊断问题 我登录到,然后转到我的仪表板,果然应用程序显示了一次崩溃: 然后我点击了它。新的Health页面显示了崩溃发生的时间、市场等信息(这些信息对我调试问题没有帮助) 然后在底部我看到: 我点击了蓝色链接,
native
Win32应用程序,该应用程序使用Project Centennial
converter。该应用程序通过了商店认证,可通过私人链接使用(我正在测试它)
在运行我的测试时,应用程序挂起并崩溃了一次。因此,我试图检索任何可用的崩溃转储来诊断问题
我登录到,然后转到我的仪表板
,果然应用程序显示了一次崩溃:
然后我点击了它。新的Health
页面显示了崩溃发生的时间、市场等信息(这些信息对我调试问题没有帮助)
然后在底部我看到:
我点击了蓝色链接,上面写着MOAPPLICATION\u HANG\u
,它打开了故障详细信息
窗口。然后,如果我一直向下滚动(点击图的过去日期和时间),我会看到:
嗯。堆栈跟踪并不是我所期望的,但我会看一看
因此,如果我单击堆栈跟踪
,就会出现以下弹出窗口:
然后,如果我点击下载,我会得到一个很小的文本文件stackTrace.tsv
(117字节),里面有这样的内容:
< >有没有办法检索一个函数,我可以在VisualStudioC++项目中使用它来分析这个崩溃,它使用<代码>本地< /代码>调试器? < p>您可以尝试使用此方法创建转储文件。
.pdb
文件或符号
所以如果有人找到一个有效的解决方案,我很想知道
你知道,我可能应该赞扬微软从UWP应用程序崩溃中实际实现了堆栈跟踪收集。我得到了我的Windows应用商店Win32/UWP应用程序中的实际崩溃,下面是我如何利用它来发现潜在的bug 首先,当您登录到应用程序时,检查应用程序列表,查看是否有任何崩溃: 如果是这样,请单击该号码/链接,并向下滚动至详细说明故障的位置。在我的例子中,这是一次看起来像这样的碰撞: 单击它,将弹出另一个窗口。向下滚动至故障日志: 它将向您显示崩溃发生的时间、应用程序的版本、发生崩溃的设备(非常好!),然后提供堆栈跟踪链接。所以点击它: 这就是崩溃时我的实际堆栈跟踪的样子。因为那个人的计算机没有我的可执行文件中的符号(
.pdb
文件),所以我的应用程序中的所有方法都显示为空白偏移量
以下是如何找到崩溃的实际位置:
使用崩溃文件的精确副本还原Visual Studio解决方案。(我假设您将解决方案的版本
版本与.exe
和.pdb
文件一起存档,然后再将其上载到Windows应用商店。)
启动Visual Studio,打开崩溃应用程序的版本,切换到Release
配置和。(这一部分很重要,因为否则Visual Studio将在开始调试项目之前尝试构建项目,这可能会打乱从堆栈跟踪中获得的函数偏移!)
然后在第一个构造函数中的某个地方放置一个断点,该构造函数将立即随应用程序加载。您需要确保它在崩溃之前触发
开始调试(点击F5
)并等待断点点击。然后显示Modules
窗格(Ctrl
+Alt
+U
),找到可执行文件并获取其基本地址:
在我的例子中,它是0xD0000
。然后切换到反汇编(Alt
+8
),并在反汇编窗口顶部的地址
栏中键入上面堆栈跟踪的基址+崩溃偏移量。我的情况是:
0xD0000+0x1D500
然后点击输入
,以显示代码中的位置。这会告诉你坠机地点。就我而言,这是一行:
那么这一切都取决于你的调试技巧。在我的例子中,很容易看到--nRow
索引超出了范围。所以修复这个bug非常简单
再次感谢微软提供了这样一个功能。我没有注意到上面显示的bug,如果我只是在一个简单的最终用户报告之后就试图发现什么会使应用程序崩溃,我会感到很难过
最后,我认为在我的第一个示例中没有收集堆栈跟踪的原因是因为应用程序挂起了。因此,在这种情况下,可能不会收集调试信息。(这只是一个猜测。)@CheeryBu:好吧,如果我在那台机器上运行调试器,我就不需要保存了