# Aprendendo a depurar com o GitHub Copilot

Identifique e corrija erros em seu código solicitando GitHub Copilot ajuda.

Localizar e corrigir bugs no código pode ser frustrante, especialmente quando você é um novo desenvolvedor. Felizmente, ferramentas como GitHub Copilot podem identificar e esmagar rapidamente bugs, permitindo que você se concentre em um trabalho mais criativo e interessante.

## Pré-requisitos

Os exemplos neste artigo pressupõem que você está usando GitHub Copilot para depurar um projeto de Python em Visual Studio Code (VS Code). Para seguir os exemplos, você precisa:

* Concluir [a configuração Visual Studio Code na Copilot](https://code.visualstudio.com/docs/copilot/setup-simplified)Visual Studio Code documentação.
* [Baixe Python](https://www.python.org/downloads/).
* Instale a [extensão Python para Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-python.python).

## Como aprender a depurar por meio de exemplos

Há duas situações principais que você encontrará ao tentar executar um código com bugs:

* O código é fechado antes de terminar de ser executado e você recebe uma mensagem de erro.
* O código é executado sem erros, mas a saída é diferente do esperado.

Felizmente, Copilot pode ajudar a depurar seu código em ambas as situações. Para saber como fazer isso, acompanhe os exemplos a seguir.

### Depurando um erro com GitHub Copilot

Ao executar um código com bugs, você geralmente receberá uma mensagem de erro. A mensagem informa o arquivo e a linha em que o erro ocorreu e descreve brevemente o que deu errado. No entanto, as mensagens de erro podem ser confusas. Para entender completamente e corrigir o bug, podemos pedir Copilot ajuda.

Vamos tentar fazer isso com um repositório de exemplo: [`new2code/debug-with-copilot`](https://github.com/new2code/debug-with-copilot).

#### Clonando o repositório de exemplo

Primeiro, precisamos criar uma cópia local do repositório:

1. [Comece a clonar o repositório new2code/debug-with-copilot](vscode://vscode.git/clone?url=https://github.com/new2code/debug-with-copilot) em VS Code. <!-- markdownlint-disable-line GHD003 -->
2. Escolha um local para salvar o repositório no computador e, em seguida, clique em **Selecionar como Destino de Repositório**.
3. Quando for solicitado, abra o repositório.

#### Executando o arquivo com bug

Agora, vamos executar o arquivo [`bugged_dice_battle.py`](https://github.com/new2code/debug-with-copilot/blob/main/bugged_dice_battle.py). O programa simula uma batalha de dados entre dois jogadores.

1. In VS Code, open and review the `bugged_dice_battle.py` file.

2. Abra a Paleta de Comandos pressionando <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Windows/Linux) ou <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> (Mac).

3. Digite `Terminal: Create New Terminal` e pressione <kbd>Enter</kbd>.

4. Na guia Terminal, cole o seguinte comando.

   Windows:

   ```shell copy
   py bugged_dice_battle.py
   ```

   Mac ou Linux:

   ```shell copy
   python bugged_dice_battle.py
   ```

5. Pressione <kbd>ENTER</kbd> para executar o programa.

Recebemos um texto de erro no terminal que termina com a seguinte mensagem:

> TypeError: apenas é possível concatenar str (não "int") a str

#### Depurando o arquivo

Para entender o que esse erro significa, [abra Copilot ChatVS Code](vscode://GitHub.Copilot-Chat?ref_product=copilot\&ref_type=engagement\&ref_style=text)e cole e envie o seguinte prompt: <!-- markdownlint-disable-line GHD003 -->

```text copy
Explain in depth why my code produces the following error and how I can fix it:

TypeError: can only concatenate str (not "int") to str
```

Copilotresponderá que o erro ocorre porque estamos tentando concatenar os inteiros e `die_2` as cadeias `die_1` de caracteres, e você só pode concatenar cadeias de caracteres em cadeias de caracteres.

Também fornecerá uma **versão atualizada do nosso código** que corrige o bug usando a função `str()` para converter os inteiros em strings antes de concatená-los. Pratique a etapa final da depuração aplicando Copilota sugestão de 's ao arquivo.

### Depurando uma saída incorreta com GitHub Copilot

Às vezes, o código com bugs é executado sem gerar nenhum erro, mas a saída está claramente incorreta. Nesse caso, a depuração pode ser mais difícil porque VS Code não é possível informar o local ou a descrição do bug.

Para esses bugs "invisíveis", Copilot é particularmente útil. Vamos testar na prática com o outro arquivo de nosso repositório de exemplo: `bugged_factorial_finder.py`. É um programa Python que deve calcular um fatorial.

#### Executando o arquivo com bug

Primeiro, vamos executar o programa para ver a saída incorreta:

1. Abra e examine o arquivo `bugged_factorial_finder.py`.

2. No terminal criado anteriormente, cole o comando a seguir.
   Windows:

   ```shell copy
   py bugged_factorial_finder.py
   ```

   Mac ou Linux:

   ```shell copy
   python bugged_factorial_finder.py
   ```

3. Pressione <kbd>ENTER</kbd> para executar o programa.

Infelizmente, o código não funciona conforme o esperado. Queremos que ele retorne `720`, o valor correto do fatorial de 6, mas a saída é muito maior do que isso.

#### Depurando o arquivo

Para entender o que deu errado, [abra Copilot Chat](vscode://GitHub.Copilot-Chat?ref_product=copilot\&ref_type=engagement\&ref_style=text) e envie o seguinte prompt: <!-- markdownlint-disable-line GHD003 -->

```text copy
Why is the output of this code so much higher than expected? Please explain in depth and suggest a solution.
```

Copilot apontará que, como estamos usando o `*=` operador, estamos multiplicando `factorial` por ambos `i`**e**`factorial`. Em outras palavras, estamos multiplicando por um `factorial` extra a cada iteração do loop.

Para corrigir esse erro, Copilot sugerirá o código que remove o extra `factorial` da equação ou que altera o `*=` operador para `=`. Faça essa alteração agora!

## Como depurar seu projeto

Agora que você praticou a depuração de alguns programas simples com Copilot, você pode usar as mesmas metodologias para localizar e corrigir bugs escondidos em seu próprio trabalho.

Por exemplo, para depurar uma mensagem de erro gerada pelo código, envie Copilot o seguinte prompt:

```text copy
Explain in depth why my code produces the following error and how I can fix it:

YOUR-ERROR-MESSAGE
```

Caso contrário, se você estiver depurando uma saída incorreta, pergunte Copilot por que a saída está incorreta e como você pode corrigi-la. Para ter os melhores resultados, dê o máximo de contexto possível sobre como a saída é diferente das suas expectativas.

Com essas táticas, você tem tudo o que precisa para começar a eliminar os bugs no seu projeto.

## Próximas etapas

Conforme você prossegue com a codificação, é provável que encontrará cenários de problemas específicos e erros difíceis de serem depurados. Para obter uma lista de possíveis problemas e prompts de exemplo Copilot Chat para corrigi-los, consulte [Depurar erros](/pt/copilot/tutorials/copilot-cookbook/debug-errors).