搭建 Debug 环境
第一步, 在 VirtualBox 安装 Windows 10. VirtualBox 是一个虚拟机软件, 你也可以用 VMWare 等同类软件. 下文简称虚拟机中的 Windows 10 为虚拟机.
第二步, 在虚拟机中以管理员模式打开 cmd 或者 powershell. 运行下面的命令:
bcdedit /debug on
bcdedit /dbgsettings serial debugport:1 baudrate:115200
对了, debugport:1
表示我们使用 COM1 串口进行调试. 和下一步中的 COM1 对应.
然后建议在虚拟机中启用增强功能, 具体方法:
在虚拟机中 "此电脑" 找到新增的盘符里的安装文件安装即可.
为了有 DEBUG 输出, 虚拟机中进行如下配置:
打开注册表编辑器(regedit
)定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
, 新建项(Key)(类似文件夹), 命名为Debug Print Filter
, 在其下建立值(REG_DWORD), 名之DEFAULT
, 值f
. 这里如果设置出错, WINDBG 将不打印调试信息 注册表的更改只有重启后生效.
第三步, 配置 VirtualBox 所需串口.
把虚拟机关机. 在虚拟机设置中按下图操作设置:
对了, \\.\pipe\myDbg
这里是我自己的设置. 你也可以不取 myDbg
这个名.
注意, 取消勾选 Connect to existing pipe/socket
保存.
第四步, 开虚拟机和 WinDbg. WinDbg 可以通过搜索 (Win+S) 找到:
如果还是找不到, 请下载并安装 WDK10. 你还可以使用 Microsoft Store 里的 WinDBG Preview
第五步, Attach to kernel. 在 WinDbg里, 对于我的软件版本, 选择 File / Debug Kernel 就会弹出这样的窗口:
我们不能直接用 com1, 因为这里的 com1 是真机的 com1, 但我们需要连接虚拟机的 com1, 虚拟机的 com1 在真机下的形式是 \\.\pipe\myDbg
. 设置如下:
点击 OK 开始连接. 你会看到:
Microsoft (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 会更好. 配置方法大同小异, 请参考微软的文档.
参考: