Debuggen von WebView2-Apps mit Visual Studio Code
Verwenden Sie Microsoft Visual Studio Code zum Debuggen von Skripts, die in WebView2-Steuerelementen ausgeführt werden. Visual Studio Code verfügt über einen integrierten Debugger für das Browserdebuggen. Weitere Informationen finden Sie unter Browserdebuggen in VS Code.
Erstellen einer launch.json-Datei
Um Ihren Code zu debuggen, muss Ihr Projekt über eine launch.json
Datei verfügen. Eine launch.json
Datei ist eine Debuggerkonfigurationsdatei zum Konfigurieren und Anpassen des Visual Studio Code-Debuggers. Eine der Eigenschaften, die zum Konfigurieren des Debuggers erforderlich sind, ist die request
-Eigenschaft. Es gibt zwei request
Typen, launch
und attach
.
Der folgende Code veranschaulicht das Starten der App aus Visual Studio Code (anstatt den Debugger an eine ausgeführte Instanz der App anzufügen). Dazu muss die App zuvor erstellt worden sein. Wenn Ihr Projekt keine Datei enthält launch.json
, erstellen Sie eine neue launch.json
Datei im .vscode
Unterordner ihres aktuellen Projekts, und fügen Sie den folgenden Code ein:
"name": "Hello debug world",
"type": "msedge",
"port": 9222, // The port value is optional, and the default value is 9222.
"request": "launch",
"runtimeExecutable": "C:/path/to/your/webview2/app.exe",
"env": {
// Customize for your app location if needed
"Path": "%path%;e:/path/to/your/app/location; "
},
"useWebView": true,
// The following two lines set up source path mapping, where `url` is the start page
// of your app, and `webRoot` is the top level directory with all your code files.
"url": "file:///${workspaceFolder}/path/to/your/toplevel/foo.html",
"webRoot": "${workspaceFolder}/path/to/your/assets"
Übergebener Befehlszeilen-URL-Parameter
Die Visual Studio Code-Quellpfadzuordnung erfordert jetzt eine URL, sodass Ihre App jetzt beim Start einen url
Befehlszeilenparameter empfängt. Sie können den url
Parameter bei Bedarf problemlos ignorieren.
Debuggen des Codes
Um einen Haltepunkt im Quellcode festzulegen, klicken Sie auf eine Codezeile, und drücken Sie dann F9:
Wählen Sie auf der Registerkarte Ausführen im Dropdownmenü die Startkonfiguration aus.
Klicken Sie auf Debuggen starten. Dabei handelt es sich um das grüne Dreieck neben der Dropdownliste der Startkonfiguration:
Öffnen Sie die Debugkonsole, um die Debugausgabe und die Fehler anzuzeigen:
Gezieltes WebView2-Debuggen
In einigen WebView2-Apps verwenden Sie möglicherweise mehr als ein WebView2-Steuerelement. Wenn Sie auswählen möchten, welches WebView2-Steuerelement in dieser Situation gedebuggt werden soll, können Sie das gezielte WebView2-Debuggen verwenden.
Öffnen Sie launch.json
die folgenden Aktionen, und führen Sie sie aus, um das gezielte WebView2-Debuggen zu verwenden.
Vergewissern Sie sich, dass der
useWebview
Parameter auftrue
festgelegt ist.Fügen Sie den Parameter hinzu
urlFilter
. Wenn das WebView2-Steuerelement zu einer URL navigiert, wird derurlFilter
Parameterwert verwendet, um Zeichenfolgen zu vergleichen, die in der URL angezeigt werden.
"useWebview": "true",
"urlFilter": "*index.ts",
// Options for "urlFilter":
// Match any url that ends with "index.ts":
"urlFilter": "*index.ts",
// Match any url that contains "index" anywhere in the URL:
"urlFilter": "*index*",
// Explicitly match a file named "index.ts":
"urlFilter": "file://C:/path/to/my/index.ts",
Beim Debuggen Ihrer App müssen Sie den Code möglicherweise von Beginn des Renderingvorgangs an schrittweise durchlaufen. Wenn Sie Webseiten auf Websites rendern und keinen Zugriff auf den Quellcode haben, können Sie die ?=value
Option verwenden, da Webseiten nicht erkannte Parameter ignorieren.
Debuggen von zwei WebView2-Steuerelementen nicht gleichzeitig möglich
Nachdem die erste Übereinstimmung in der URL gefunden wurde, wird der Debugger beendet. Sie können nicht zwei WebView2-Steuerelemente gleichzeitig debuggen, da der CDP-Port von allen WebView2-Steuerelementen gemeinsam genutzt wird und eine einzelne Portnummer verwendet.
Debuggen ausgeführter Prozesse
Möglicherweise müssen Sie den Debugger an ausgeführte WebView2-Prozesse anfügen. Aktualisieren Sie dazu in launch.json
den request
Parameter, und ändern Sie dessen Wert in attach
:
"name": "Hello debugging world",
"type": "msedge",
"port": 9222,
"request": "attach",
"runtimeExecutable": "C:/path/to/your/webview2/myApp.exe",
"env": {
"Path": "%path%;e:/path/to/your/build/location; "
},
"useWebView": true
Ihr WebView2-Steuerelement muss den CDP-Port (Chrome Developer Protocol) öffnen, um das Debuggen des WebView2-Steuerelements zu ermöglichen. Ihr Code muss erstellt werden, um sicherzustellen, dass nur ein WebView2-Steuerelement einen CDP-Port geöffnet hat, bevor der Debugger gestartet wird.
Sie müssen auch einen neuen REGKEY <myApp.exe> = --remote-debugging-port=9222
unter Computer\HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
hinzufügen, damit der Debugger den richtigen Port finden kann. So fügen Sie diesen Registrierungsschlüssel hinzu:
Drücken Sie die Windows-Logo-Taste , und suchen Sie dann nach dem Registrierungs-Editor. Öffnen Sie die App Registrierungs-Editor , und klicken Sie dann auf Ja , um die Bearbeitung zuzulassen.
Versuchen Sie in der Ordnerstruktur auf der linken Seite, zu erweitern
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
.Wenn der
\Edge\WebView2\AdditionalBrowserArguments
Teil dieses Pfads nicht vorhanden ist, erstellen Sie diese drei geschachtelten Unterordner wie folgt:So erstellen Sie den
\Edge
Unterordner: Klicken Sie in der Ordnerstruktur mit der rechten Maustaste auf denHKEY_CURRENT_USER\Software\Policies\Microsoft
Ordner, zeigen Sie auf Neu, und wählen Sie dann Schlüssel aus. Ein Ordner wird als untergeordnetes Element des Ordners hinzugefügt, derMicrosoft
anfangs den Namen hatNew Key #1
. Klicken Sie mit der rechten Maustaste auf denNew Key #1
Ordner, und wählen Sie dann Umbenennen aus. Geben Sie als Namen des neuen Schlüssels einEdge
.Erstellen Sie den
\WebView2
Unterordner wie im vorherigen Schritt.Erstellen Sie den
\AdditionalBrowserArguments
Unterordner wie im vorherigen Schritt.Die Struktur ist jetzt auf
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
erweitert.
Klicken Sie mit der rechten Maustaste auf den
AdditionalBrowserArguments
Ordner, zeigen Sie auf Neu, und wählen Sie dann Zeichenfolgenwert aus. Klicken Sie in der Spalte Name mit der rechten Maustaste aufNew Value #1
, wählen Sie Umbenennen aus, und geben Sie dann den Dateinamen ihrer ausführbaren App ein, zmyApp.exe
. B. .Klicken Sie in der Spalte Name mit der rechten Maustaste auf den Namen der ausführbaren Datei, z
myApp.exe
. B. , und wählen Sie dann Ändern aus. Das Dialogfeld Zeichenfolge bearbeiten wird geöffnet.Geben Sie in das Textfeld Wertdaten ein
--remote-debugging-port=9222
:Klicken Sie auf die Schaltfläche OK , und überprüfen Sie dann, ob der Registrierungsschlüssel mit dem Folgenden übereinstimmt (mit dem Dateinamen Ihrer
.exe
Datei in der Spalte Name ):
Debugablaufverfolgungsoptionen
Um die Debugablaufverfolgung zu aktivieren, fügen Sie den trace
Parameter wie folgt zu launch.json
hinzu:
- Fügen Sie den Parameter hinzu
trace
:
"name": "Hello debugging world",
"type": "msedge",
"port": 9222,
"request": "attach",
"runtimeExecutable": "C:/path/to/your/webview2/app.exe",
"env": {
"Path": "%path%;e:/path/to/your/build/location; "
},
"useWebView": true
,"trace": true // Turn on debug tracing, and save the output to a log file.
Speichern der Debugausgabe in einer Protokolldatei:
,"trace": "verbose" // Turn on verbose tracing in the Debug Output pane.
Visual Studio Code-Debugausgabe mit aktivierter ausführlicher Ablaufverfolgung:
Debuggen von Office-Add-Ins
Wenn Sie Office-Add-Ins debuggen, öffnen Sie den Add-In-Quellcode in einer separaten Instanz von Visual Studio Code. Öffnen Sie launch.json
in Ihrer WebView2-App. Fügen Sie den folgenden Code in hinzu launch.json
, um den Debugger an das Office-Add-In anzufügen:
,"debugServer": 4711
Debuggen von WebView2 WinUI 2-Apps (UWP)
Installieren Sie eine WebView2 Runtime-Version über
106.0.1370.34
.Öffnen Sie den Registrierungs-Editor, indem Sie die Windows-Logo-Taste drücken und dann nach dem Registrierungs-Editor suchen. Öffnen Sie die Anwendung Registrierungs-Editor , und wählen Sie Ja aus, um die Bearbeitung zuzulassen.
Legen Sie den Registrierungsschlüssel
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
auf fest--remote-debugging-pipe
. Führen Sie dazu die Schritte aus, die oben im Abschnitt Debuggen ausgeführter Prozesse beschrieben sind.Vergewissern Sie sich, dass der Registrierungsschlüssel im Editor festgelegt ist und mit folgendem übereinstimmt:
Fügen Sie Ihrer
launch.json
Datei eine neue Konfiguration hinzu. Öffnen Sielaunch.json
, und fügen Sie den folgenden Code hinzu:"name": "Attach to UWP App", "useWebView":{ "pipeName":"JSDebugPipe" } "request": "attach", "type": "msedge", "webRoot":"${workspaceFolder}"
Starten Sie Ihre App.
Klicken Sie auf die Schaltfläche Debuggen starten , um den Prozess anzufügen und mit dem Debuggen zu beginnen.
Problembehandlung für den Debugger
Diese Szenarien können auftreten, wenn Sie den Debugger verwenden.
Hält nicht am Haltepunkt an
Wenn der Debugger nicht am Haltepunkt anhält und Sie eine Debugausgabe haben:
Um das Problem zu beheben, vergewissern Sie sich, dass die Datei mit dem Haltepunkt dieselbe Datei ist, die vom WebView2-Steuerelement verwendet wird. Der Debugger führt keine Quellpfadzuordnung aus.
Anfügen an den ausgeführten Prozess nicht möglich
Wenn Sie an einen ausgeführten Prozess nicht anfügen können und ein Timeoutfehler angezeigt wird:
Um das Problem zu beheben, vergewissern Sie sich, dass das WebView2-Steuerelement den CDP-Port geöffnet hat. Stellen Sie sicher, dass Ihr additionalBrowserArguments
Wert in der Registrierung richtig ist, oder die Optionen sind richtig. Weitere Informationen finden Sie unter additionalBrowserArguments für dotnet und additionalBrowserArguments für Win32.
Siehe auch
- Erste Schritte mit WebView2
- WebView2Samples-Repository : ein umfassendes Beispiel für WebView2-Funktionen.
- WebView2-API-Referenz