Depurar aplicações WebView2 com o Visual Studio Code
Utilize o Microsoft Visual Studio Code para depurar scripts que são executados em controlos WebView2. O Visual Studio Code tem um depurador incorporado para depuração do browser. Veja Depuração do browser no VS Code.
Criar um ficheiro de launch.json
Para depurar o código, o projeto tem de ter um launch.json
ficheiro. Um launch.json
ficheiro é um ficheiro de configuração de depurador para configurar e personalizar o depurador do Visual Studio Code. Uma das propriedades necessárias para configurar o depurador é a request
propriedade . Existem dois request
tipos, launch
e attach
.
O código seguinte demonstra como iniciar a aplicação a partir do Visual Studio Code (em vez de anexar o depurador a uma instância em execução da aplicação). Para tal, a aplicação tem de ter sido criada anteriormente. Se o projeto não tiver um launch.json
ficheiro, crie um novo launch.json
ficheiro na .vscode
subpasta do projeto atual e cole o seguinte código no mesmo:
"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"
Parâmetro de URL da linha de comandos transmitido em
O mapeamento do caminho de origem do Visual Studio Code requer agora um URL, pelo que a sua aplicação recebe agora um url
parâmetro de linha de comandos quando é iniciado. Pode ignorar com segurança o url
parâmetro, se necessário.
Depurar o código
Para definir um ponto de interrupção no código fonte, clique numa linha de código e, em seguida, prima F9:
No separador Executar , selecione a configuração de início no menu pendente.
Clique em Iniciar Depuração, que é o triângulo verde junto à lista pendente iniciar configuração:
Para ver a saída de depuração e os erros, abra a Consola de Depuração:
Depuração do WebView2 direcionada
Em algumas aplicações WebView2, poderá utilizar mais do que um controlo WebView2. Para escolher o controlo WebView2 a depurar nesta situação, pode utilizar a depuração webView2 direcionada.
Abra launch.json
e conclua as seguintes ações para utilizar a depuração webView2 direcionada.
Confirme que o
useWebview
parâmetro está definido comotrue
.Adicione o
urlFilter
parâmetro . Quando o controlo WebView2 navega para um URL, o valor dourlFilter
parâmetro é utilizado para comparar cadeias que aparecem no URL.
"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",
Ao depurar a sua aplicação, poderá ter de percorrer o código desde o início do processo de composição. Se estiver a compor páginas Web em sites e não tiver acesso ao código fonte, pode utilizar a opção, uma vez que as ?=value
páginas Web ignoram parâmetros não reconhecidos.
Não é possível depurar dois controlos WebView2 ao mesmo tempo
Após a primeira correspondência ser encontrada no URL, o depurador para. Não é possível depurar dois controlos WebView2 ao mesmo tempo, porque a porta CDP é partilhada por todos os controlos WebView2 e utiliza um único número de porta.
Depurar processos em execução
Poderá ter de anexar o depurador a processos WebView2 em execução. Para tal, no launch.json
, atualize o parâmetro, alterando o request
respetivo valor para 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
O controlo WebView2 tem de abrir a porta CDP (Chrome Developer Protocol) para permitir a depuração do controlo WebView2. O código tem de ser criado para garantir que apenas um controlo WebView2 tem uma porta CDP aberta, antes de iniciar o depurador.
Também tem de adicionar uma nova REGKEY <myApp.exe> = --remote-debugging-port=9222
Computer\HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
em , para que o depurador possa encontrar a porta adequada. Para adicionar esta chave de registo:
Prima a tecla do logótipo do Windows e, em seguida, procure editor de registo. Abra a aplicação Editor de Registo e, em seguida, clique em Sim para permitir a edição.
Na árvore de pastas à esquerda, tente expandir
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
.Se a
\Edge\WebView2\AdditionalBrowserArguments
parte desse caminho não existir, crie essas três subpastas aninhadas, da seguinte forma:Para criar a
\Edge
subpasta: na árvore de pastas, clique com o botão direito do rato na pasta, paire oHKEY_CURRENT_USER\Software\Policies\Microsoft
cursor sobre Novo e, em seguida, selecione Chave. Uma pasta é adicionada como subordinado daMicrosoft
pasta, inicialmente denominadaNew Key #1
. Clique com o botão direito do rato na pasta e, em seguida, selecione Mudar oNew Key #1
Nome. IntroduzaEdge
o nome da nova chave.Crie a
\WebView2
subpasta, tal como no passo anterior.Crie a
\AdditionalBrowserArguments
subpasta, tal como no passo anterior.A árvore está agora expandida para
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
.
Clique com o botão direito do rato na pasta, paire o
AdditionalBrowserArguments
cursor sobre Novo e, em seguida, selecione Valor da Cadeia. Na coluna Nome , clique com o botão direito do rato emNew Value #1
, selecione Mudar o Nome e, em seguida, introduza o nome de ficheiro do executável da sua aplicação, comomyApp.exe
.Na coluna Nome , clique com o botão direito do rato no nome do ficheiro executável, como
myApp.exe
, e, em seguida, selecione Modificar. É aberta a caixa de diálogo Editar Cadeia .Na caixa de texto Dados do valor , introduza
--remote-debugging-port=9222
:Clique no botão OK e, em seguida, verifique se a chave do registo corresponde ao seguinte (com o nome de ficheiro do ficheiro
.exe
na coluna Nome ):
Opções de rastreio de depuração
Para ativar o rastreio de depuração, adicione o trace
parâmetro a launch.json
, da seguinte forma:
- Adicione o
trace
parâmetro :
"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.
A guardar a saída de depuração num ficheiro de registo:
,"trace": "verbose" // Turn on verbose tracing in the Debug Output pane.
Saída de Depuração do Visual Studio Code com rastreio verboso ativado:
Depurar suplementos do Office
Se estiver a depurar Suplementos do Office, abra o código fonte do suplemento numa instância separada do Visual Studio Code. Abra launch.json
na sua aplicação WebView2. Adicione o seguinte código a launch.json
, para anexar o depurador ao suplemento do Office:
,"debugServer": 4711
Depurar aplicações WebView2 WinUI 2 (UWP)
Instale uma versão do WebView2 Runtime anterior
106.0.1370.34
a .Abra o Editor de Registo ao premir a tecla do logótipo do Windows e, em seguida, procure o editor de registo. Abra a aplicação Editor de Registo e selecione Sim para permitir a edição.
Defina a chave
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
de registo igual a--remote-debugging-pipe
. Para tal, siga os passos descritos na secção Depurar processos de execução acima.Verifique se a chave de registo está definida no editor e corresponde ao seguinte:
Adicione uma nova configuração ao seu
launch.json
ficheiro. Abralaunch.json
e adicione o seguinte código:"name": "Attach to UWP App", "useWebView":{ "pipeName":"JSDebugPipe" } "request": "attach", "type": "msedge", "webRoot":"${workspaceFolder}"
Inicie a sua aplicação.
Clique no botão Iniciar Depuração para anexar ao processo e começar a depurar.
Resolver problemas do depurador
Poderá encontrar estes cenários ao utilizar o depurador.
Não para no ponto de interrupção
Se o depurador não parar no ponto de interrupção e tiver a saída de depuração:
Para resolver o problema, confirme que o ficheiro com o ponto de interrupção é o mesmo ficheiro utilizado pelo controlo WebView2. O depurador não efetua o mapeamento do caminho de origem.
Não é possível anexar ao processo em execução
Se não conseguir anexar a um processo em execução e receber um erro de tempo limite:
Para resolver o problema, confirme que o controlo WebView2 abriu a porta CDP. Certifique-se de que o valor additionalBrowserArguments
no registo está correto ou que as opções estão corretas. Veja additionalBrowserArguments para dotnet e additionalBrowserArguments para Win32.
Confira também
- Introdução ao WebView2
- Repositório WebView2Samples - um exemplo abrangente de capacidades do WebView2.
- Referência da API webView2