从 UWP 应用检查转储文件

2024-03-19

首先,我在 Windows 10 手机上启用转储文件的保存:

设置 > 更新和安全 > 对于开发人员 > 保存这么多故障转储:3

然后我调试了一个引发异常的应用程序。我停止后继续调试。断开并再次连接手机后,我能够访问存储在下的转储文件Windows phone\Phone\Documents\Debug目录。该文件名为

FPCL.WIndows - a736c773-c105-4b30-a799-4bf317872f5e with exception C000027B on 5-03-2016 12.11.dmp

大约有 140 MB!

我将文件复制到bin我的 UWP 应用程序的目录。之后我在 Visual Studio 2015 中将其作为文件打开(在同一项目中)。现在我可以看到转储摘要我有以下按钮:

  • 仅使用托管进行调试
  • 混合调试
  • 仅使用本机进行调试
  • 设置符号路径
  • 全部复制到剪贴板

如果我跑仅使用托管进行调试 I get

运行时捕获了致命异常。查看Watch窗口中的$stowedException可以查看原始异常信息。

并点击Break I get

没有运行兼容的代码。所选的调试引擎不支持在当前线程上执行的任何代码(例如,仅执行本机运行时代码)。

In the Watch 1窗口我看到以下内容

名称:{CLR}$stowedException
值:{“该方法或操作未实现。”}
类型:System.NotImplementedException

这应该是我在我的应用程序中抛出的异常。当我打开这个节点并查看下面时堆栈跟踪我可以得到一个行号。按下时Continue I get

调试器无法继续运行该进程。调试转储文件时不支持此操作。

所以我只能阻止。


如果我跑混合调试我又得到了

运行时捕获了致命异常。查看Watch窗口中的$stowedException可以查看原始异常信息。

并点击Break I get

kernelbase.pdb 未加载 kernelbase.pdb 包含查找模块 KERNELBASE.dll 源所需的调试信息 模块信息:版本:10.0.10586.218(th2_release.160401-1800)原始位置:KERNELBASE.dll 尝试以下选项之一: 更改现有 PDB 和二进制搜索路径并重试:Microsoft 符号服务器

在这里我可以按Load or New。因此在给定位置下找不到 kernelbase.pdb。它应该存在吗?我应该在哪里找到它?

In the Watch 1窗口我看到和上面一样的,我只能阻止它。


如果我跑仅使用本机进行调试 I get

FPCL.WIndows 中 0x76ECDF95 (combase.dll) 处未处理的异常 - f736c883-f105-4d30-a719-4bf328872f5e,异常 C000027B,于 5-03-2016 12.11.dmp: 0xC000027B: Anwendungsinterne Ausnahme (参数:0x075C6838、0x00000002)。

并点击Break我得到与上面相同的丢失内核库错误,但是在Watch 1窗口的Value is Unable to evaluate the expression。所以我只能阻止。


根据这个post https://stackoverflow.com/a/4699467/426227我应该能够检查源代码并找到原因。但是如何正确检查这样的 UWP 转储文件呢?


你提到

[...]0xC000027B [...]

[...] $stowedException [...]

这两个指标都表明转储内存在存储异常。

要分析此类异常,首先观察第 9 频道碎片整理工具,第 136 集 https://channel9.msdn.com/Shows/Defrag-Tools/DefragTools-136-Debugging-User-Mode-Crash-Dumps-Part-2安德鲁·理查兹解释并分析了它们(在3:28 https://channel9.msdn.com/Shows/Defrag-Tools/DefragTools-136-Debugging-User-Mode-Crash-Dumps-Part-2#time=03m28s)。 然后从以下位置下载 PDE 扩展并分析你的转储windbg /questions/tagged/windbg而不是 Visual Studio。

关于符号kernelbase,它们应该从 Microsoft 符号服务器下载。要在 WinDbg 中进行设置,请使用.symfix;.reload。如果您想在 Visual Studio 中再试一次,请转到“调试/选项”并选择“调试/符号”,然后选中“Microsoft 符号服务器”。

关于在 Visual Studio 中按下的按钮,在调试调试版本时选择“仅托管”,因为您的应用程序将在 CoreCLR 上运行,并在调试发布版本时选择“仅本机”,因为您的应用程序将使用 .NET 本机运行时支持。 (如果您没有更改默认设置,则这适用;否则根据您的编译设置进行选择)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 UWP 应用检查转储文件 的相关文章

随机推荐

  • 模拟用户脚本中的 Enter 键 tampermonkey [重复]

    这个问题在这里已经有答案了 我正在尝试编写一个用户脚本 在类名 chat input 的输入标记中键入一些内容并按 Enter 键 到目前为止 用户脚本仅键入 Hello 在聊天输入中 但不模拟回车键 知道为什么吗 var msg Hell
  • 将文本和容器置于圆圈内

    我这里有一个 Bootply http www bootply com XLGE6Vpjov http www bootply com XLGE6Vpjov 我需要将 3 个圆圈置于容器中 然后将其中的文本水平和垂直居中 如何使文本垂直居中
  • 获取模型或控制器中消化的 asset_path

    我有一个Article模型 它有一个字段svg path I use fabricjs绘制可以包含多篇文章且可修改的画布 我目前所做的是生成一个json包含文章的所有必需字段 包括svg path 当我尝试使用asset path帮手 ht
  • 如何使用 python boto3 将 s3 对象从一个存储桶复制到另一个存储桶

    我想将文件从一个 s3 存储桶复制到另一个 我收到以下错误 s3 meta client copy 源 目标 类型错误 copy 至少需要 4 个参数 给定 3 个 我无法通过阅读文档找到解决方案 这是我的代码 usr bin env py
  • madvise() 中 MADV_USERFAULT 标志的状态是什么?

    已经有一些讨论在 madvise 中使用新标志来告诉内核不要处理某些内存范围内的页面错误 lwn net 1 https lwn net Articles 615086 lwn net 2 https lwn net Articles 54
  • Google Drive SDK iOS 示例

    我按照Google Drive sdk的iOS示例教程中的步骤进行操作 https developers google com drive ios quickstart https developers google com drive i
  • paxos 与 raft 进行领导者选举

    读完paxos和raft paper后 我有以下困惑 paxos论文仅描述了单个日志条目的共识 相当于raft算法中的领导者选举部分 在raft的leader选举中 paxos的方式相对于简单的随机超时方式有什么优势呢 一个常见的误解是原始
  • 在 Eclipse 控制台中对日志进行着色

    有没有办法在 Eclipse 控制台中对部分日志进行着色 我知道我可以发送到错误和标准流并对它们进行不同的着色 但我更喜欢在 ANSI 转义代码 或任何其他 HTML 行中查找一些内容 我可以在字符串中嵌入颜色以使其在字符串中着色日志 它肯
  • 强制表单文本为小写

    我如何强制 用户名 文本中的文本input无论用户类型如何都小写 div class register div
  • 当区域控制器加载时,为什么我的 BaseController.User 值 == null ? [复制]

    这个问题在这里已经有答案了 我正在编写一个 Asp Net 核心应用程序 并且在获得导航访问权限之前让用户通过 Google 进行身份验证 当用户导航到我的 WorldBuilder 区域并点击 WorldController 时 Base
  • 两个具有相同名称和不同私钥的 iOS 分发证书的问题[已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们有两个 iOS 发行版证书 我在签名时遇到一些问题 因为两个分发证书具有相同的名称 如果我添加两个证书并尝试使用其中一个证书进行签名
  • sqlite 选择日期条件

    我有一个带有出生日期的 sqlite 表 我想执行一个查询来选择年龄超过 30 岁的记录 我已经尝试过以下方法 但它不起作用 select from mytable where dob gt 1 Jan 1980 select from m
  • Django Rest Framework 在序列化之前更新数据

    我希望任何用户都可以使用我的 RESTful API 创建自己的产品 为此 我创建了一个继承ListCreateAPIView的视图 问题是用户应该只创建他 她拥有的产品 因此当创建 Product 模型的实例时 我希望字段 Owner 对
  • 如何为iMessage Sticker App网格贴纸提供不同尺寸

    我创建了一个 iOS iMessage 贴纸应用程序 根据苹果文档 我应该能够以三种不同尺寸之一显示贴纸 但是 无论我将贴纸图像设置为什么尺寸 300px x 300px 408px x 408px 618px x 618px 它们仅显示为
  • Golang 中的函数声明

    在 Golang 中声明函数似乎有两种不同的方式 如下所示 package main import fmt var someFunc func arg string fmt Println arg func main someFunc He
  • 如何在 ruby​​ 中进行 base58 编码?

    我正在尝试编码原型股 http protoshares net 原始格式的钱包地址 如中所述Bitcoin https en bitcoin it wiki Technical background of Bitcoin addresses
  • Jupyter 和 Common Lisp

    我正在尝试安装cl jupyter https github com fredokun cl jupyter common lisp 内核Jupyter http jupyter org 我无法让它工作 当我打开一个新的 lisp 笔记本
  • 如何将文本框中的日期插入数据库

    请帮助我将日期从文本框中以 dd mm yyyy 格式插入到 SQL Server 我的代码如下 int prio Convert ToInt32 Priority Text string stdate planstart Text str
  • 解析装饰器中的 args 和 kwargs

    我有一个需要 args 和 kwargs 的函数 我需要根据 args 和 kwargs 的值在我的装饰器中做一些事情2nd函数中的arg 如下面的代码所示 def workaround func def decorator fn def
  • 从 UWP 应用检查转储文件

    首先 我在 Windows 10 手机上启用转储文件的保存 设置 gt 更新和安全 gt 对于开发人员 gt 保存这么多故障转储 3 然后我调试了一个引发异常的应用程序 我停止后继续调试 断开并再次连接手机后 我能够访问存储在下的转储文件W