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.exe,從Windows 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
    

    如需詳細資訊,請參閱 啟用 Smart Client (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,請先使用 BCD 專案啟用核心,再建立 ISO。

如需如何修改預設 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 Command-Line選項

啟用網路核心模式偵錯

在技術人員電腦上,執行下列命令以建立具有網路核心模式偵錯設定的 Windows PE 映射:

  1. 以系統管理員身分啟動「部署與映像工具環境」。

  2. 使用 copype 建立 Windows PE 檔案的工作複本。

    copype amd64 d:\WinPE_amd64
    
  3. 如果目的電腦是 UEFI 系統,請執行下列命令 (下列埠和金鑰是範例。埠可以從 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 系統,請執行下列命令 (下列埠和金鑰為範例。埠可以從 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

WinPE for Windows 10

WinPE:掛接和自訂

Wpeutil Command-Line 選項

Winpeshl.ini參考:WinPE 啟動時啟動應用程式

BCDEdit Command-Line選項