无法接收在 windows 8.1 phone 设备上崩溃的 cordova 应用程序的调试消息
Unable to receive debug messages for crashing cordova app on windows 8.1 phone device
我安装了 VS 2015 Enterprise RC,并且正在将部署在 iOS 和 Android 上的 Cordova 应用程序移植到 Windows 8.1 Phone /通用
进行必要的更改后,我有一个 应用程序在设备上显示启动画面后不久就崩溃了。
我在 visual studio 错误/输出 windows 或设备上没有看到任何错误消息。该应用程序消失了
任何人都可以提供一种方法来捕获有关 VS 中设备上关键应用程序故障的信息或以其他方式进行调试吗?
根据我的经验,从 platform/windows
目录调试解决方案更容易,但我不知道这对您的情况是否有帮助。
还有 plugin 有助于 console.log
日志记录。
Windows Phone 8.1 / Universal Cordova 应用程序中最常见的错误是使用在没有 Winstore Jscompat library 的情况下操作 DOM 的库。如果您使用 Angular、Ember、Knockout 或类似的东西,它会导致在 DOM 上的第一个操作崩溃。
我认为这是因为您遇到了当前调试器类型无法捕获的本机异常。在经典的 windows phone 项目中,如 c# 和 winjs 项目,我们可以将调试器类型设置为同时支持托管和本机。如果您可以通过启用本机调试器获得更多信息,我认为值得一试。
默认情况下,对于 Cordova 项目,默认的调试器类型是 Script only。我们可以通过启用诊断构建日志来找到它:工具->选项->项目和解决方案->将"MSBuild project build output verbosity"更改为诊断。
那么让我们举个例子来说明我们能找到什么:
创建一个新的黑色 cordova 项目。
将解决方案平台更改为 Windows Phone(通用)和 select "Emulator 8.1 WVGA 4 inch 512MB"。
构建解决方案。然后让我们检查输出 window.
中的构建日志
在输出 window 中搜索 "debuggertype" 时,我们将能够找到以下信息:
DebuggerFlavor = PhoneEmulator81Wvga4512
DebuggerType = Script
DebugSymbols = false
DebugSymbolsProjectOutputGroupDependsOn =
DefaultContentType = Default
DefaultReferenceGroup = Implicit (Apache Cordova)
DefineCommonReferenceSchemas =
DefineExplicitDefaults = true
我们可以看到 DebuggerType 被设置为 Script。这是从 MSBuild 中的全局设置继承而来的。您还可以从诊断构建输出日志中找到该文件的内容。
然后让我们看看如何更改它以捕获本机异常。转到您的项目文件夹并打开 .jsproj.user 文件。我们可以找到如下设置:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
现在,将其更改为以下将更改调试器类型,您可以在构建日志中验证。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerType>Mixed</DebuggerType>
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
然后您可以再次 运行 您的应用,看看它是否会在您的 visual studio 输出中获取任何信息 windows。
Windows Phone 在转储文件中收集所有崩溃数据。在以下条件下激活此功能:
Settings > Reports
之后,将在 phone 上的以下文件夹中创建转储文件:
WindowsPhone/Phone/Documents/Debug/
您可以使用 Visual Studio 打开分析它们。
我安装了 VS 2015 Enterprise RC,并且正在将部署在 iOS 和 Android 上的 Cordova 应用程序移植到 Windows 8.1 Phone /通用
进行必要的更改后,我有一个 应用程序在设备上显示启动画面后不久就崩溃了。
我在 visual studio 错误/输出 windows 或设备上没有看到任何错误消息。该应用程序消失了
任何人都可以提供一种方法来捕获有关 VS 中设备上关键应用程序故障的信息或以其他方式进行调试吗?
根据我的经验,从 platform/windows
目录调试解决方案更容易,但我不知道这对您的情况是否有帮助。
还有 plugin 有助于 console.log
日志记录。
Windows Phone 8.1 / Universal Cordova 应用程序中最常见的错误是使用在没有 Winstore Jscompat library 的情况下操作 DOM 的库。如果您使用 Angular、Ember、Knockout 或类似的东西,它会导致在 DOM 上的第一个操作崩溃。
我认为这是因为您遇到了当前调试器类型无法捕获的本机异常。在经典的 windows phone 项目中,如 c# 和 winjs 项目,我们可以将调试器类型设置为同时支持托管和本机。如果您可以通过启用本机调试器获得更多信息,我认为值得一试。
默认情况下,对于 Cordova 项目,默认的调试器类型是 Script only。我们可以通过启用诊断构建日志来找到它:工具->选项->项目和解决方案->将"MSBuild project build output verbosity"更改为诊断。
那么让我们举个例子来说明我们能找到什么:
创建一个新的黑色 cordova 项目。
将解决方案平台更改为 Windows Phone(通用)和 select "Emulator 8.1 WVGA 4 inch 512MB"。
构建解决方案。然后让我们检查输出 window.
中的构建日志
在输出 window 中搜索 "debuggertype" 时,我们将能够找到以下信息:
DebuggerFlavor = PhoneEmulator81Wvga4512
DebuggerType = Script
DebugSymbols = false
DebugSymbolsProjectOutputGroupDependsOn =
DefaultContentType = Default
DefaultReferenceGroup = Implicit (Apache Cordova)
DefineCommonReferenceSchemas =
DefineExplicitDefaults = true
我们可以看到 DebuggerType 被设置为 Script。这是从 MSBuild 中的全局设置继承而来的。您还可以从诊断构建输出日志中找到该文件的内容。
然后让我们看看如何更改它以捕获本机异常。转到您的项目文件夹并打开 .jsproj.user 文件。我们可以找到如下设置:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
现在,将其更改为以下将更改调试器类型,您可以在构建日志中验证。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerType>Mixed</DebuggerType>
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
然后您可以再次 运行 您的应用,看看它是否会在您的 visual studio 输出中获取任何信息 windows。
Windows Phone 在转储文件中收集所有崩溃数据。在以下条件下激活此功能:
Settings > Reports
之后,将在 phone 上的以下文件夹中创建转储文件:
WindowsPhone/Phone/Documents/Debug/
您可以使用 Visual Studio 打开分析它们。