WinPE:调试应用

可以使用 Windows 调试程序(如 Ntsd.exe、Cdb.exe 和 Windbg.exe)和支持工具在 Windows PE 上调试应用程序,以及调试 Windows PE 内核。 Windows 10 SDK 中包含调试工具。 必须让调试工具在 Windows PE 计算机上可用,方法是将它们复制到本地或从共享中使用它们。

若要远程调试 Windows PE,可能需要关闭电脑上的内置防火墙:

wpeutil disablefirewall

用户模式调试

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

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

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

  2. 在 Windows PE 命令提示符处禁用防火墙。

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

    dbgsrv.exe -t tcp:port=1234
    

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

  4. 使用进程服务器从远程计算机附加到 Windows PE 目标计算机上的进程或启动这些进程:

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

    有关详细信息,请参阅激活智能客户端(Windows 调试程序)

还可以直接在 Windows PE 计算机上运行调试程序。 但是,执行此操作需要在每次重启 Windows PE 计算机后设置符号和源路径。 建议从运行完整版 Windows 的计算机执行调试,如本过程所述。

如果要跳过 startnet.cmd 或 setup.exe,直接转到命令提示符进行调试,则可执行以下调试过程。 此过程将跳过所有初始化(包括设置),不运行任何命令(例如 Wpeinit.exe)。 必须在联机操作系统上联机执行此过程。

在任何初始化之前启用用户模式调试的步骤

  1. 删除 winpeshl.ini 文件(如果存在)。 如果 winpeshl.ini 文件不存在,则默认情况下可以访问用户模式调试。

  2. 在启动过程中,赶在命令提示符显示之前按下 Ctrl 键。 随之显示命令提示符。

  3. 开始进行调试。

内核模式调试

若要在内核模式下进行调试,必须在系统启动之前启用内核模式调试。 启动配置文件有一个用于内核模式调试的设置,启用该设置的方式是使用 bcdedit.exe 命令行工具来修改启动配置数据 (BCD) 存储。 内核调试只能通过 bcdedit.exe 来执行。 bcdedit.exe 位于 Windows 分区的 \Windows\System32 目录中。

默认调试程序设置如下:

identifier              {dbgsettings} 
debugtype               Serial 
debugport               1 
baudrate                115200

若要为 VM 环境创建 ISO,请在创建 ISO 之前为内核启用 BCD 条目。

若要了解如何修改默认 BCD 存储 (default.bcd),请参阅如何使用 Bcdedit 修改 BCD 存储

启用内核模式调试的步骤

  1. 找到 BCD 存储,该存储包含在名为 bcd 的文件中。 此文件位于 Windows PE 映像所在介质的根目录的启动目录中。

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

    bcdedit /store <path to winpe>/boot/bcd /set {default} debug on
    

    可能需要将 {default} 替换为 Windows PE 的启动选项的唯一标识符 (UID)。

    另外,还可以在启动过程中按 F8 并选择调试选项来启用内核调试。

    注意 若要在 Windows PE 内使用符号服务器,请在服务器的符号和文件共享上使用 net use 命令。

有关控制调试的命令行选项的详细信息,请参阅 BCDEdit 命令行选项

启用网络内核模式调试的步骤

在技术人员电脑上运行以下命令,以使用网络内核模式调试设置来创建 Windows PE 映像:

  1. 以管理员身份启动“部署和映像工具环境”。

  2. 运行“copype”以创建 Windows PE 文件的工作副本。

    copype amd64 d:\WinPE_amd64
    
  3. 如果目标电脑采用 UEFI 系统,请运行以下命令(以下 PORT 和 key 是示例。PORT 可以设置为 50000 到 50039。有关密钥,请参阅加密密钥):

    bcdedit /store d:\WinPE_amd64\media\EFI\Microsoft\Boot\BCD /set {default} debug on
    bcdedit /store d:\WinPE_amd64\media\EFI\Microsoft\Boot\BCD /set {default} bootdebug on
    bcdedit /store d:\WinPE_amd64\media\EFI\Microsoft\Boot\BCD /dbgsettings NET HOSTIP:xxx.xxx.xxx.xxx PORT:50005 key:5.5.5.5
    
  4. 如果目标电脑采用旧版 BIOS 系统,请运行以下命令(以下 PORT 和 key 是示例。PORT 可以设置为 50000 到 50039。有关密钥,请参阅加密密钥):

    bcdedit /store d:\WinPE_amd64\media\Boot\BCD /set {default} debug on
    bcdedit /store d:\WinPE_amd64\media\Boot\BCD /set {default} bootdebug on
    bcdedit /store d:\WinPE_amd64\media\Boot\BCD /dbgsettings NET HOSTIP:xxx.xxx.xxx.xxx PORT:50005 key:5.5.5.5
    
  5. 将 MakeWinPEMedia 与 /ISO 选项配合使用,以创建包含 Windows PE 文件的 ISO 文件。请运行以下命令:

    makewinpemedia /iso d:\WinPE_amd64\winpe_x64_debug.iso
    

在目标电脑中,从 winpe_x64_debug.iso 着手,运行以下命令:

windbg.exe -k net:port=50005,key=5.5.5.5

适用于 Windows 10 的 WinPE

WinPE:装载并自定义

Wpeutil 命令行选项

Winpeshl.ini 参考:启动 WinPE 时启动应用

BCDEdit 命令行选项