在验证 OS 中调试应用

我们目前仅支持使用 Windbg.exe 进行调试,并支持工具在验证 OS 及其内核上调试应用程序。 Windows SDK 中包含调试工具。 必须通过在本地复制调试工具或从共享中使用调试工具,使调试工具在验证 OS 计算机上可用。

用户模式调试

最简单的用户模式调试方法是在验证 OS 计算机上运行进程服务器,然后使用另一台计算机上的调试程序连接到该服务器。 Windows SDK 中的调试工具随附了该进程服务器。

在用户模式下运行进程服务器的步骤

  1. 将 Windows 调试进程服务器工具 dbgsrv.exeWindows SDK 调试工具文件夹 (C:\Program Files (x86)\Windows Kits\10.0\Debuggers\x64) 复制到验证 OS 计算机。

  2. 启动 Windows 调试进程服务器,指定到电脑的连接方法(例如 TCP 端口):

    dbgsrv.exe -t tcp:port=1234
    

    注意

    有关详细信息,请参阅激活进程服务器(Windows 调试程序)

  3. 在远程计算机中,使用进程服务器附加到验证 OS 目标计算机上的进程或启动进程:

    windbg -remote tcp:server=Server,port=1234
    

    重要

    建议从运行完整版 Windows 的计算机执行调试,如本过程所述。

内核模式调试

可以在系统启动之前或使用启动后的命令提示符(需要重启)启用内核模式调试。 启动配置文件有一个用于内核模式调试的设置,启用该设置的方式是使用 bcdedit.exe 命令行工具来修改启动配置数据 (BCD) 存储。 该工具位于 Windows 分区的 %windir%\System32 目录中。

  • 默认调试程序设置如下
    identifier              {dbgsettings} 
    debugtype               Serial 
    debugport               1 
    baudrate                115200
    

启用内核模式调试

这将仅在验证 OS 计算机上启用调试,之后需要设置支持类型(网络、USB 电缆等)。

  1. 创建 BIOSEFI 分区,如果已存在,请跳过。 向此分区分配一个字母(即 S:\)。 使用 bcdboot.exe 创建 BDC 存储区。

  2. 在命令提示符下键入以下 bcdedit 命令,以便将用于启动映像的 BCD 存储的调试标志设置为 debug on

    • 在 UEFI 系统上
    bcdedit /store S:\EFI\Microsoft\Boot\BCD /set {default} debug on
    
    • 在传统 BIOS 系统上
    bcdedit /store S:\Boot\BCD /set {default} debug on
    

    注意

    若要联机更改此设置,请从前面的命令中删除 store 参数并重启系统以保存更改。

    注意

    若要在验证 OS 中使用符号服务器,请在服务器的符号和文件共享上使用 net use 命令。 有关控制调试的命令行选项的详细信息,请参阅 BCDEdit 命令行选项

支持网络内核模式调试

在技术人员电脑上,运行以下命令以创建具有内核模式调试设置的验证 OS 映像。

  1. 如前所述,启用内核模式调试。 S:\ 驱动器用作此示例的系统分区的位置,相应地进行更新。

  2. 运行以下命令以启用网络 KD 调试。 使用将运行 WinDbg 的主机电脑的 IP 地址更新 hostip。 PORT 可设置为 50000 到 50039。 如果未设置(建议)或可以设置自定义密钥,则会自动生成密钥,有关详细信息,请参阅加密密钥

    • 在 UEFI 系统上
    bcdedit /store S:\EFI\Microsoft\Boot\BCD /dbgsettings NET HOSTIP:xxx.xxx.xxx.xxx PORT:500xx key:x.x.x.x
    
    • 在传统 BIOS 系统上
    bcdedit /store S:\Boot\BCD /dbgsettings NET HOSTIP:xxx.xxx.xxx.xxx PORT:500xx key:x.x.x.x
    
    • 在主机电脑中运行以下命令并启动目标电脑:
    windbg.exe -k net:port=500xx,key=x.x.x.x
    

    注意

    有关网络调试的详细信息,请检查手动设置 KDNET 网络内核调试

支持通过 USB 电缆进行内核模式调试

在技术人员电脑上,运行以下命令以创建具有内核模式调试设置的验证 OS 映像。

  1. 按前面所述创建 BCD 存储区并启用调试。 使用 S:\ 作为系统分区的位置,相应地进行更新。

  2. 运行以下命令以启用网络 KD 调试。 使用将运行 WinDbg 的主机电脑的 IP 地址更新 hostip。 PORT 可设置为 50000 到 50039。 如果未设置(建议)或可以设置自定义密钥,则会自动生成密钥,有关详细信息,请参阅加密密钥

    • 在 UEFI 系统上
    bcdedit /store S:\EFI\Microsoft\Boot\BCD /dbgsettings NET HOSTIP:169.254.255.255 PORT:500xx key:x.x.x.x busparams:x.x.x nodhcp
    
    • 在传统 BIOS 系统上
    bcdedit /store S:\Boot\BCD /dbgsettings NET HOSTIP:169.254.255.255 PORT:500xx key:x.x.x.x busparams:x.x.x nodhcp
    
    • 在主机电脑中运行以下命令并启动目标电脑:
    windbg.exe -k net:port=500xx,key=x.x.x.x
    

    注意

    若要获取总线参数,请使用 kdnet.exe(可在 Windows SDK 上找到)。 按照使用 kdnet.exe 确认设备支持并查看 busparams 值中介绍的说明