如何调试冻结 Windows 应用商店应用
How to debug frozen Windows Store app
我们正在开发一个 Windows 应用程序(8.1,非 UWP),当 运行 在后台(最小化)一段时间(大约半小时)时完全冻结。该应用程序将显示常规用户界面,但不会响应 UI 事件。 Windows 没有检测到应用程序是 "Not responding"(如果主线程被阻塞,在 Windows 表单上会发生什么)。
当应用程序冻结时,Visual Studio 2015 的调试器中止并显示以下消息:
The network connection to has been lost. Debugging ist aborted.
我很难调试这个问题。我已经尝试过的:
- 从 Visual Studio 中暂停和恢复应用程序(不会触发问题)
- 禁用所有可能导致 UI 线程被阻塞的后台任务
- 正在检查所有可用的日志源以获取更多信息(事件日志等)- 那里没有条目
- 运行 不同硬件上的应用程序 - 相同问题
- 将调试器附加到处于卡住状态的应用进程 - 在 "External code"
中显示主线程
- release/debug模式无区别
所以我的问题是:如何调试 Windows 商店应用程序在后台 运行 时冻结。
将 Debug.WriteLine("")
添加到您可能怀疑会导致问题的所有 UI 和后台函数(入口点、成功点和异常点)。写入调试日志不会影响您处于发布模式的应用程序。
仔细查看日志的输出 window,同时监控诊断工具。
问题:您是否在代码中使用了 Dispatcher
?如果是这样,请确保 CoreDispatcherPriority
未设置为高优先级。我有一个冻结问题,只是通过在几个地方将其设置为正常和低来解决它。
await
CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
_navigationService.NavigateTo(typeof(OutPage), mdm.Content.MessageData.ToString());
});
另请查看 Windows 事件查看器以获取线索。
希望这可以帮助。
我们正在开发一个 Windows 应用程序(8.1,非 UWP),当 运行 在后台(最小化)一段时间(大约半小时)时完全冻结。该应用程序将显示常规用户界面,但不会响应 UI 事件。 Windows 没有检测到应用程序是 "Not responding"(如果主线程被阻塞,在 Windows 表单上会发生什么)。
当应用程序冻结时,Visual Studio 2015 的调试器中止并显示以下消息:
The network connection to has been lost. Debugging ist aborted.
我很难调试这个问题。我已经尝试过的:
- 从 Visual Studio 中暂停和恢复应用程序(不会触发问题)
- 禁用所有可能导致 UI 线程被阻塞的后台任务
- 正在检查所有可用的日志源以获取更多信息(事件日志等)- 那里没有条目
- 运行 不同硬件上的应用程序 - 相同问题
- 将调试器附加到处于卡住状态的应用进程 - 在 "External code" 中显示主线程
- release/debug模式无区别
所以我的问题是:如何调试 Windows 商店应用程序在后台 运行 时冻结。
将 Debug.WriteLine("")
添加到您可能怀疑会导致问题的所有 UI 和后台函数(入口点、成功点和异常点)。写入调试日志不会影响您处于发布模式的应用程序。
仔细查看日志的输出 window,同时监控诊断工具。
问题:您是否在代码中使用了 Dispatcher
?如果是这样,请确保 CoreDispatcherPriority
未设置为高优先级。我有一个冻结问题,只是通过在几个地方将其设置为正常和低来解决它。
await
CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
_navigationService.NavigateTo(typeof(OutPage), mdm.Content.MessageData.ToString());
});
另请查看 Windows 事件查看器以获取线索。 希望这可以帮助。