首先,我在 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 转储文件呢?