WinPE: Debuggen von Apps

Sie können Windows-Debugger wie Ntsd.exe, Cdb.exe und Windbg.exe sowie Supporttools nutzen, um Anwendungen unter Windows PE und den Windows PE-Kernel zu debuggen. Debugtools sind im Windows 10-SDK enthalten. Sie müssen die Debugtools auf dem Windows PE-Computer verfügbar machen, indem Sie sie lokal kopieren oder über eine Freigabe verwenden.

Möglicherweise müssen Sie die integrierte Firewall auf dem PC deaktivieren, um Windows PE über eine Remoteverbindung zu debuggen:

wpeutil disablefirewall

Debuggen im Benutzermodus

Die einfachste Debugmethode im Benutzermodus besteht darin, einen Prozessserver auf dem Windows PE-Computer auszuführen und ihn mithilfe eines Debuggers mit einem anderen Computer zu verbinden. Der Prozessserver ist in den Debugtools im Windows 10-SDK enthalten.

So führen Sie einen Prozessserver im Benutzermodus aus

  1. Kopieren Sie das Windows Debugging Process Server-Tool (dbgsrv.exe) aus dem Debugtool-Ordner Windows 10 SDK (Beispiel: C:\Program Files (x86)\Windows Kits\10.0\Debuggers\x64) auf den Windows PE-Computer.

  2. Deaktivieren Sie an der Windows PE-Eingabeaufforderung die Firewall.

    wpeutil disablefirewall
    
  3. Starten Sie Windows Debugging Process Server, indem Sie eine Verbindungsmethode für den PC angeben, z. B. einen TCP-Port:

    dbgsrv.exe -t tcp:port=1234
    

    Weitere Informationen finden Sie unter Aktivieren eines Prozessservers (Windows-Debugger).

  4. Verwenden Sie auf dem Remotecomputer den Prozessserver, um Prozesse auf dem Windows PE-Zielcomputer anzuhängen oder zu starten:

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

    Weitere Informationen finden Sie unter Aktivieren eines intelligenten Client (Windows-Debugger).

Es ist auch möglich, den Debugger direkt auf dem Windows PE-Computer auszuführen. Dazu müssen Sie jedoch Symbol- und Quellpfade nach jedem Neustart des Windows PE-Computers einrichten. Es wird empfohlen, dass Sie das Debuggen von einem Computer ausführen, auf dem (wie in diesem Verfahren beschrieben) eine Vollversion von Windows ausgeführt wird.

Mit der folgenden Debuggingprozedur können Sie startnet.comd oder setup.exe umgehen und zu Debuggingzwecken direkt zur Eingabeaufforderung fortfahren. Bei dieser Prozedur werden alle Initialisierungsvorgänge (einschließlich des Setups) umgangen, und es werden keine Befehle wie „Wpeinit.exe“ ausgeführt. Diese Prozedur muss online auf einem Onlinebetriebssystem ausgeführt werden.

So aktivieren Sie das Debuggen im Benutzermodus vor der Initialisierung

  1. Löschen Sie die Datei „winpeshl.ini“, falls sie vorhanden ist. Wenn die Datei „winpeshl.ini“ nicht vorhanden ist, ist das Debuggen im Benutzermodus standardmäßig möglich.

  2. Halten Sie die Taste „STRG“ während des Startvorgangs gedrückt, bevor die Eingabeaufforderung angezeigt wird. Eine Eingabeaufforderung wird angezeigt.

  3. Fahren Sie mit dem Debuggen fort.

Debuggen im Kernelmodus

Um im Kernelmodus debuggen zu können, müssen Sie das Debuggen im Kernelmodus aktivieren, bevor das System gestartet wird. Die Startkonfigurationsdatei enthält eine Einstellung für das Debuggen im Kernelmodus, die mit dem Befehlszeilentool „bcdedit.exe“ aktiviert wird, um den Startkonfigurationsdaten-Speicher (BCD) zu ändern. Das Debuggen im Kernelmodus kann nur mithilfe von „bcdedit.exe“ durchgeführt werden. „Bcdedit.exe“ befindet sich im Verzeichnis „\Windows\System32“ der Windows-Partition.

Die Standardeinstellungen des Debuggers sind:

identifier              {dbgsettings} 
debugtype               Serial 
debugport               1 
baudrate                115200

Wenn Sie ISO-Images für VM-Umgebungen erstellen möchten, aktivieren Sie den Kernel mit den BCD-Einträgen, bevor Sie das ISO-Image erstellen.

Informationen zum Ändern des BCD-Standardspeichers (default.bcd) finden Sie unter Ändern des BCD-Speichers mit Bcdedit.

So aktivieren Sie das Debuggen im Kernelmodus

  1. Suchen Sie den BCD-Speicher, der in einer Datei mit dem Namen bcd enthalten ist. Die Datei befindet sich im Startverzeichnis im Stamm des Mediums, das das Windows PE-Image enthält.

  2. Geben Sie an der Eingabeaufforderung den folgenden bcdedit-Befehl ein, um das Debugflag des BCD-Speichers, der zum Starten des Images verwendet wird, auf debug on festzulegen:

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

    {default} muss möglicherweise durch den eindeutigen Bezeichner (UID) der Startoption für Windows PE ersetzt werden.

    Alternativ können Sie das Kerneldebugging auch aktivieren, indem Sie beim Start „F8“ drücken und die Debugoption auswählen.

    Hinweis: Wenn Sie einen Symbolserver unter Windows PE verwenden möchten, führen Sie den Befehl net use für die Symbole und Dateifreigaben des Servers aus.

Weitere Informationen zu Befehlszeilenoptionen, die das Debuggen steuern, finden Sie unter BCDEdit-Befehlszeilenoptionen.

So aktivieren Sie das Debuggen von Netzwerken im Kernelmodus

Führen Sie auf einem Techniker-PC die folgenden Befehle aus, um ein Windows PE-Image mit Einstellungen für das Debuggen von Netzwerken im Kernelmodus zu erstellen.

  1. Starte die Umgebung für Bereitstellungs- und Imageerstellungstools als Administrator.

  2. Führen Sie copype aus, um eine Arbeitskopie der Windows PE-Dateien zu erstellen.

    copype amd64 d:\WinPE_amd64
    
  3. Wenn es sich beim Ziel-PC um ein UEFI-System handelt, führen Sie die folgenden Befehle aus (Der folgende PORT und Schlüssel sind Beispiele. PORT kann auf eine Zahl zwischen 50000 und 50039 festgelegt werden. Informationen zum Schlüssel finden Sie unter Verschlüsselungsschlüssel):

    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. Wenn es sich beim Ziel-PC um ein BIOS-Legacysystem handelt, führen Sie die folgenden Befehle aus (Der folgende PORT und Schlüssel sind Beispiele. PORT kann auf eine Zahl zwischen 50000 und 50039 festgelegt werden. Informationen zum Schlüssel finden Sie unter Verschlüsselungsschlüssel):

    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. Verwenden Sie „MakeWinPEMedia“ mit der Option „/ISO“, um eine ISO-Datei zu erstellen, die die Windows PE-Dateien enthält. Führen Sie die folgenden Befehle aus:

    makewinpemedia /iso d:\WinPE_amd64\winpe_x64_debug.iso
    

Starten Sie „winpe_x64_debug.iso“ auf dem Ziel-PC, und führen Sie den folgenden Befehl aus:

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

WinPE für Windows 10

WinPE: Bereitstellen und Anpassen

Wpeutil-Befehlszeilenoptionen

Referenz zu Winpeshl.ini: Starten einer App beim Starten von WinPE

BCDEdit-Befehlszeilenoptionen