如果在用户端软件直接退出,在以前 win32 程序可以使用 DUMP 进行调试。在 UWP 需要在电脑的注册表做一些配置才可以收集到 DUMP 文件
打开注册表,通过 win+R 运行 regedit 就可以打开注册表
注册表可以输入路径,请输入 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
请看下面
如果不存在 LocalDumps 文件夹,请右击创建一个
右击新建项,输入 LocalDumps 保存
右击新建一个可扩展字符串,写入 DumpFolder 然后双击输入 DUMP 文件可以存放的文件夹,注意这个文件夹需要有权限
接着右击新建 DWORD 32 位,输入 DumpCount 再双击输入值,这个表示最多可以存放多少个 DUMP 文件,默认值是 10 个
右击新建 DWORD 32 位,输入 DumpType 再双击输入值,设置存放的 DUMP 是什么 DUMP 可以选的值有三个。输入 0 是 Custom dump 自定义的 dump 文件,输入 1 是 Mini dump 一个小的 DUMP 输入 2 是 Full dump 推荐使用包含程序所有信息的 dump 这样调试方便。但是 Full dump 是很大的,如果使用了推荐设置 DumpCount 小一些。
最后一个值可以不创建,只有在 DumpType 设置为 0 也就是 Custom dump 才需要新建 CustomDumpFlags 这个是 DWORD 32 位,具体请看 _MINIDUMP_TYPE
设置完成就可以运行一个会炸的程序,看一下是不是在设置的文件里面存在了 DUMP 文件
如果小伙伴不想做复杂的设置,请看这篇博客用脚本自动设置 UWP应用异常退出Dump - Lulixue的专栏 - CSDN博客
用 PowerShell 设置方法请看下面代码
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting" -Name "LocalDumps"
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpFolder" -Value "%LOCALAPPDATA%\CrashDumps" -PropertyType "ExpandString"
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" -Name "DumpCount" -Value 10 -PropertyType DWord
这里 "%LOCALAPPDATA%\CrashDumps"
就是设置 DUMP 输出文件夹,请将这个文件夹修改为你期望的路径
创建一个运行直接退出的程序
打开 VisualStudio 创建一个 UWP 程序,在这个程序里面写简单代码
界面的代码
<Grid Background="Transparent">
<TextBlock TextWrapping="Wrap" HorizontalAlignment="Center" VerticalAlignment="Center" Text="不要碰我,碰我就直接退出

欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客"/>
</Grid>
打开 cs 文件,在用户碰到软件就让软件直接退出
public MainPage()
{
InitializeComponent();
Content.PointerMoved += MainPage_PointerMoved;
}
private void MainPage_PointerMoved(object sender, PointerRoutedEventArgs e)
{
throw new Exception();
}
现在运行程序,碰一下让他直接退出,打开刚才设置的 DUMP 文件夹,可以看到文件
调试 DUMP 文件
推荐使用 WinDbg Preview 进行调试
打开应用商店,搜 WinDbg Preview 就可以安装
直接双击 DUMP 文件使用 WinDbg Preview 打开
打开之后就可以去玩一会回来,加载符号需要很长的时间
这个软件的每个界面功能请看下面
调试的方法本文就不告诉大家了
本文会经常更新,请阅读原文: https://dotnet-campus.github.io//post/win10-uwp-%E6%94%B6%E9%9B%86-DUMP-%E6%96%87%E4%BB%B6.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 lindexi (包含链接: https://dotnet-campus.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。