【问题标题】:Unable to receive debug messages for crashing cordova app on windows 8.1 phone device无法在 Windows 8.1 手机设备上接收崩溃的 Cordova 应用程序的调试消息
【发布时间】:2015-12-22 18:22:02
【问题描述】:

我已安装 VS 2015 Enterprise RC,并且正在将部署在 iOS 和 Android 上的 Cordova 应用程序移植到 Windows 8.1 Phone / Universal

进行必要的更改后,我有一个应用程序在设备上显示初始屏幕后不久崩溃

我在 Visual Studio 错误/输出窗口或设备上看不到任何错误消息。该应用程序就消失了

谁能提供一种方法来在 VS 中捕获有关设备上关键应用程序故障的信息或以其他方式用于调试目的?

【问题讨论】:

    标签: debugging windows-phone-8.1 visual-studio-2015 visual-studio-cordova


    【解决方案1】:

    我认为这是因为您遇到了当前调试器类型无法捕获的本机异常。在 c# 和 winjs 等经典 windows phone 项目中,我们可以将调试器类型设置为同时支持托管和原生。如果您可以通过启用本机调试器获得更多信息,我认为值得一试。

    默认情况下,对于 Cordova 项目,默认调试器类型为仅脚本。我们可以通过启用Diagnostic build log找到它:Tools->Options->Projects and Solutions ->将“MSBuild project build output verbosity”改为Diagnostic。

    那我们举个例子来说明一下我们能找到什么:

    1. 新建一个黑色cordova项目。

    2. 将解决方案平台更改为 Windows Phone(通用)并选择“Emulator 8.1 WVGA 4 inch 512MB”。

    3. 构建解决方案。然后让我们在输出窗口中检查构建日志。

    在输出窗口中搜索“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 输出窗口中获得任何信息。

    【讨论】:

    • 很好的说明,但是由于这个错误,我无法调试我的应用程序:The debugger does not support debugging managed and native code at the same time on this platform
    【解决方案2】:

    根据我的经验,从platform/windows 目录调试解决方案更容易,但我不知道这是否对您的情况有所帮助。

    还有plugin 可以帮助console.log 进行日志记录。

    Windows Phone 8.1 / Universal Cordova 应用程序中最常见的错误是使用在没有Winstore Jscompat library 的情况下操作 DOM 的库。如果你使用 Angular、Ember、Knockout 或类似的东西,它会在第一次操作 DOM 时导致崩溃。

    【讨论】:

      【解决方案3】:

      Windows Phone 在转储文件中收集所有崩溃数据。在以下位置激活此功能:

      设置 > 报告

      之后,转储文件将在手机上的以下文件夹中创建:

      WindowsPhone/Phone/Documents/Debug/

      您可以使用 Visual Studio 打开分析它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-08
        • 2015-08-23
        • 1970-01-01
        • 1970-01-01
        • 2022-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多