搭建 Debug 环境
第一步,在 VirtualBox 安装 Windows 10. VirtualBox 是一个虚拟机软件,你也可以用 VMWare 等同类软件。下文简称虚拟机中的 Windows 10 为虚拟机.
第二步,在虚拟机中以管理员模式打开 cmd 或者 powershell. 运行下面的命令:
bcdedit /dbgsettings serial debugport:1 baudrate:115200```
对了,`debugport:1` 表示我们使用 COM1 串口进行调试。和下一步中的 COM1 对应.
然后建议在虚拟机中启用增强功能,具体方法:
![image-20200109164233971.png][1]
在虚拟机中 "此电脑" 找到新增的盘符里的安装文件安装即可.
为了有 DEBUG 输出,虚拟机中进行如下配置:
打开注册表编辑器 (`regedit`) 定位到 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager`, 新建项 (Key)(类似文件夹), 命名为 `Debug Print Filter`, 在其下建立值 (REG_DWORD), 名之 `DEFAULT`, 值 `f`. **这里如果设置出错,WINDBG 将不打印调试信息** 注册表的更改只有重启后生效.
第三步,配置 VirtualBox 所需串口.
把虚拟机关机。在虚拟机设置中按下图操作设置:
![image-20200109163711585.png][2]
对了,`\\.\pipe\myDbg` 这里是我自己的设置。你也可以不取 `myDbg` 这个名.
**注意,取消勾选 Connect to existing pipe/socket**
保存.
第四步,开虚拟机和 WinDbg. WinDbg 可以通过搜索 (Win+S) 找到:
![image-20200109164025127.png][3]
如果还是找不到,请 [下载并安装 WDK10][4]. 你还可以使用 _Microsoft Store_ 里的 _WinDBG Preview_
第五步,Attach to kernel. 在 WinDbg 里,对于我的软件版本,选择 File / Debug Kernel 就会弹出这样的窗口:
![image-20200109165040535.png][5]
我们不能直接用 com1, 因为这里的 com1 是真机的 com1, 但我们需要连接虚拟机的 com1, 虚拟机的 com1 在真机下的形式是 `\\.\pipe\myDbg`. 设置如下:
![image-20200109165452854.png][6]
点击 OK 开始连接。你会看到:
```textMicrosoft (R) Windows Debugger Version 10.0.18362.1 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Opened \\.\pipe\myDbg
Waiting to reconnect...
现在我们已经可以调试了。不妨试试,点击暂停:
你会发现虚拟机中的 Windows 10 卡住了,点击继续 (Go) 又可以继续运行了.
通过 WinDbg 我们可以拥有全面的调试功能,但是对于开发效率而言,结合 Visual Studio 会更好。配置方法大同小异,请参考 微软的文档.
参考: