Windows 10 崩溃查询
Posted
技术标签:
【中文标题】Windows 10 崩溃查询【英文标题】:Windows 10 Crash Whodunit 【发布时间】:2015-11-16 23:38:33 【问题描述】:我在商店中有一个应用程序让我有些头疼。我的客户报告并证实,应用程序在以下情况下崩溃/关闭:
启动应用程序 关闭应用 至少等待 15 分钟 打开应用程序应用程序将在启动画面结束并启动扩展启动画面时立即关闭。目前还不清楚是什么导致了这个问题。该应用程序将继续关闭/崩溃。该应用程序必须完全卸载并重新安装,然后才能再次开始工作。我只能使用应用程序的商店版本重现此问题。我在事件查看器程序中没有找到任何崩溃报告。
我已经从开发门户下载了一些崩溃报告,但我认为我没有看到基于崩溃的时间戳和频率显示的崩溃。
额外信息:我没有运行任何后台任务或磁贴更新。
我有三个子问题:
-
在系统中寻找哪些好地方可以详细了解应用关闭的原因?
是否可以在我的系统上运行商店构建,这样我就可以运行一些测试,而不必每次都将应用程序提交到商店?
基于以下事实:1) 应用程序第一次运行 2) 在约 15 分钟内启动或上一次启动时在任何后续时间运行 3) 在上一次启动时间 > 15 分钟前运行时将自行关闭 4 ) 它只发生在商店构建中,有没有人知道可能是什么原因造成的?
更新:
我尝试使用 Visual Studio 调试应用程序的商店版本,我只能看到以下内容:
Exception thrown at 0x00007FFF54D7A1C8 (KernelBase.dll) in App.exe: 0x40080201: WinRT originate error (parameters: 0x000000008000000E, 0x000000000000002C, 0x0000006E46EAE9B0).
Exception thrown at 0x00007FFF54D7A1C8 (KernelBase.dll) in App.exe: 0x40080201: WinRT originate error (parameters: 0x000000008000000E, 0x0000000000000046, 0x0000006E46EAE630).
The thread 0x1be8 has exited with code 1 (0x1).
The thread 0xfa8 has exited with code 1 (0x1).
The thread 0x115c has exited with code 1 (0x1).
The thread 0x730 has exited with code 1 (0x1).
The thread 0xed4 has exited with code 1 (0x1).
The thread 0x1894 has exited with code 1 (0x1).
The thread 0x18a0 has exited with code 1 (0x1).
The thread 0x194c has exited with code 1 (0x1).
The thread 0x1a3c has exited with code 1 (0x1).
The thread 0x1988 has exited with code 1 (0x1).
The thread 0x16ec has exited with code 1 (0x1).
The thread 0x1584 has exited with code 1 (0x1).
The thread 0xfd0 has exited with code 1 (0x1).
The thread 0xd8c has exited with code 1 (0x1).
The thread 0xcec has exited with code 1 (0x1).
The thread 0x16b4 has exited with code 1 (0x1).
The thread 0x12f8 has exited with code 1 (0x1).
The thread 0x146c has exited with code 1 (0x1).
The thread 0x36c has exited with code 1 (0x1).
The thread 0x1854 has exited with code 1 (0x1).
The thread 0x1ae4 has exited with code 1 (0x1).
The thread 0xa38 has exited with code 1 (0x1).
The thread 0x230 has exited with code 1 (0x1).
The program '[3840] App.exe' has exited with code 1 (0x1).
我猜程序通常会以代码 0 退出,所以一定有问题。很难看出抛出的异常是什么。
我试图打破异常并走过去看看是什么导致了它,但我得到的只是另一个异常:
Exception thrown at 0x00007FFF54D7A1C8 in App.exe: Microsoft C++ exception: _com_error at memory location 0x000000EE2788E9D0.
我向商店上传了一个带有内置复活节彩蛋的应用版本,允许我禁用扩展启动画面中的所有代码。即使禁用了所有代码,它仍然会崩溃/关闭。
更新 2: 应用程序在启动时开始关闭的时间范围似乎与系统进入休眠/睡眠的时间有关。
【问题讨论】:
如果您还没有这样做,我会尝试使用 Visual Studio 调试商店构建。在VS的菜单中,选择Debug -> Other Debug Targets -> Debug Installed Package 很好的建议。我不知道这是可能的。我会尽快尝试并让您知道它是否有效。如果是这样,您应该将其作为答案,我会将其标记为正确! 查看更新的问题 【参考方案1】:我猜这可能与应用程序的生命周期有关。
在您的应用被用户暂停后,由于资源限制,它可能会被操作系统终止。发生这种情况时,您的应用中之前的会话数据将丢失。因此,如果您没有任何检查来恢复数据,并且如果您的应用启动依赖于这些数据,则应用将崩溃并给您例如NullReferenceException
s。
调试此问题的一种方法是使用 Visual Studio 的 生命周期事件 调试器。要激活它,您需要运行您的应用,然后在任务栏中打开 生命周期事件(见下图)并选择 暂停和关闭。请注意,这将导致应用程序关闭。现在使用 Visual Studio 重新启动应用程序,这次它是从 Terminated 模式启动的。
通常您会在App.xaml.cs
中看到以下代码。这是恢复您以前的应用程序状态的好地方。可以在 here 找到一个很好的参考(注意它适用于 Windows 8 商店应用,但在 UWP 中是相同的概念)。
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
//TODO: Load state from previously suspended application
另外,我强烈建议您将异常写入日志文件并将其存储到服务器,或者礼貌地要求用户通过电子邮件将其发送给您。由于崩溃发生在应用程序的前台,您将能够在 -
public App()
this.UnhandledException += (s, e) => ;
希望这会有所帮助,祝你好运!
【讨论】:
感谢您的留言。我刚刚通过查看代码并在脑海中调试它找到了解决方案(请参阅发布的答案) 很高兴你想通了。但是你有没有想过为什么它第一次加载n然后被终止后就崩溃了? 我决定给你赏金,即使你没有真正解决问题,但如果不发布整个源代码,这是不可能的。谢谢! 感谢@JorisWeimar,希望这里列出的内容将来会对您有所帮助。【参考方案2】:原来是时间问题。该代码在简历代码中做了一些坏事(将变量类型转换为错误的类型)。它没有出现在调试版本中的原因是访问恢复代码的速度较慢。当它到达那个代码时,这种类型转换错误不会发生。它确实发生在商店构建中,但是 HockeyApp 或 Windows 事件查看器没有以某种方式拾取非法转换异常。
【讨论】:
【参考方案3】:这是重新定位到 Windows 10 的 Windows8.1 商店应用吗?
您可以使用事件查看器查看有关应用程序崩溃或任何其他系统事件记录的详细信息。只需在 W10 中搜索事件查看器。
使用向导为 Store 生成应用程序包。由于 Windows 10 允许旁加载应用程序,因此您可以使用旁加载来安装和测试应用程序。开发者模式还支持侧载应用。您只需安装 .appx 及其证书即可进行旁加载。 https://msdn.microsoft.com/en-us/library/windows/apps/dn706236.aspx
您能否分享您从日志记录中获得的更多详细信息?使用的能力是什么?还建议您使用 Application Insights 遥测来轻松调试/错误报告。
【讨论】:
但是它创建的包是一个 .appxupload 包。这也适用于侧载吗?我确实使用了事件查看器,但是当应用程序关闭时没有显示任何内容。我正在查看 windows -> 应用程序。以上是关于Windows 10 崩溃查询的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio Emulator 使 Windows 10 崩溃