17370845950

win10 uwp 收集 DUMP 文件 创建一个运行直接退出的程序调试 DUMP 文件

在用户端软件直接退出时,传统的 win32 程序可以通过 dump 文件进行调试。然而,在 uwp 环境中,需要在电脑的注册表中进行一些配置才能收集到 dump 文件。

首先,打开注册表。可以通过 Win+R 快捷键运行

regedit
来打开注册表编辑器。

在注册表中,输入路径

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting
。如果在该路径下没有找到
LocalDumps
文件夹,请右击并创建一个新项,命名为
LocalDumps

接下来,在

LocalDumps
文件夹下,右击并新建一个可扩展字符串值,命名为
DumpFolder
。双击该值,输入一个用于存放 DUMP 文件的文件夹路径,确保该文件夹具有相应的权限。

然后,右击并新建一个 DWORD 32 位值,命名为

DumpCount
。双击该值,输入一个数字,表示最多可以存放的 DUMP 文件数量,默认值为 10。

再新建一个 DWORD 32 位值,命名为

DumpType
。双击该值,输入一个数字来设置 DUMP 文件的类型。可以选择的值有三个:输入 0 表示 Custom dump,输入 1 表示 Mini dump,输入 2 表示 Full dump。推荐使用包含程序所有信息的 Full dump,但请注意 Full dump 文件较大,因此建议适当调整
DumpCount
的值。

最后,如果

DumpType
设置为 0(Custom dump),需要新建一个 DWORD 32 位值,命名为
CustomDumpFlags
,具体设置请参考
_MINIDUMP_TYPE

完成上述配置后,可以运行一个会导致程序崩溃的程序,检查设置的文件夹中是否生成了 DUMP 文件。

要创建一个会直接退出的 UWP 程序,可以使用 Visual Studio 创建一个新的 UWP 项目,并在其中编写简单的代码。

界面代码如下:


    

在 CS 文件中,添加以下代码以在用户触碰软件时直接退出:

public MainPage()
{
    InitializeComponent();
    Content.PointerMoved += MainPage_PointerMoved;
}

private void MainPage_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    throw new Exception();
}

运行该程序,触碰界面使其直接退出,然后检查之前设置的 DUMP 文件夹,确认是否生成了 DUMP 文件。

调试 DUMP 文件时,推荐使用 WinDbg Preview。可以通过应用商店搜索并安装 WinDbg Preview。

双击 DUMP 文件即可使用 WinDbg Preview 打开。请注意,加载符号可能需要较长时间。

WinDbg Preview 的界面功能请参考以下图片:

本文不详细介绍调试方法,具体请参考原文:https://www./link/34c9857f8eaa71063a6db763f5c9ff73。

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:https://www./link/69fc366f1a0ccb6967c128510f26854e。