Um momento
Aula 06
Cursos / Golang: Ambiente e Ferramentas de Desenvolvimento da Linguagem Go
Como Debugar Codigo de Golang no Video Studio Code vscode com o Delve e Extensao Go

Summary

# Resumo da Aula: Debugando Projetos Go no Visual Studio Code

Nesta aula, o instrutor ensina como debugar projetos em Go utilizando o Visual Studio Code (VS Code). 

## Instalação da Extensão e Delve

1. **Instalação da Extensão**: Após instalar a extensão para Go, o VS Code sugerirá a instalação do Delve (DLV), o depurador do Go.
2. **Configuração do Launch.json**: O VS Code precisa de um arquivo `launch.json` para configurar como o depurador deve ser executado.

## Configurações do Launch.json

- O arquivo `launch.json` será criado automaticamente quando você tentar debugar.
- As configurações principais estão dentro da propriedade `configurations`, que é um array de objetos. Cada objeto representa uma configuração de depuração.
- Para um projeto simples (com apenas `main.go`), o modo deve ser definido corretamente para que a depuração funcione.

## Executando e Depurando o Código

1. **Run Configurations**: Execute a configuração desejada a partir do menu de depuração.
2. **Colocando Breakpoints**: 
   - O instrutor demonstrou como adicionar um breakpoint para pausar a execução em uma linha específica do código.
   - Ao atingir o breakpoint, é possível ver o valor das variáveis na aba de variáveis.

## Navegando no Código Durante a Depuração

- **F10**: Avança para a próxima linha sem entrar em funções.
- **F11**: Entra na função chamada.
- **Shift + F11**: Sai da função atual e retorna ao ponto onde foi chamada.

## Manipulando Breakpoints

- É possível ativar/desativar ou remover breakpoints diretamente da aba de pontos de parada.
- A opção de remover todos os breakpoints também está disponível.

## Conclusão

O instrutor finaliza a aula incentivando a interação com o vídeo, pedindo likes e comentários.

---

### Observações

- O launch.json pode ser configurado para rodar arquivos específicos ou pacotes conforme a necessidade.
- O editor possibilita uma experiência de depuração robusta, facilitando o processo de desenvolvimento em Go.

Video Transcript

Nesta aula vou te ensinar como debugar o projeto de Go no Visual Studio Code VS Code. Então vamos lá. Depois de instalar a extensão para Go do VS Code nós podemos agora debugar. Eu tinha feito no vídeo anterior executar e iniciar a depuração o atalho F5 mas não funcionou. Mas ele instalou o Delve. Então quando você fizer isso clicar aqui pela primeira vez ele vai sugerir que você instale o DLV Delve que é o debugador do Go. Então você pode clicar para instalar e depois instalar todos os pacotes necessários. Vamos aqui ver o que acontece. Então meu caso falhou. Ele não sabe como rodar o debugador porque ele só tem um arquivo main.go e não está dentro de um modo definido pelo arquivo go.mode. Então ele realmente não sabe como rodar isso. Então o vscode tem um arquivo chamado launch.json que tem as configurações para poder que ele usa quando rodar o debugador. Eu vou clicar aqui no Go launch package para criar um. Esse arquivo vscode bar launch.json que é criado aqui na minha pasta do projeto. Ele criou com essa configuração aqui. Bem então é um arquivo.json tem que abrir chave tem certas propriedades o que importa é configurations. Uma array aqui de um objeto que define uma configuração que vai aparecer aqui se você clicar no debugador. Você tem várias opções essa opção que aparece aqui corresponde a esse objeto aqui definido no launch.json. Só tem um agora que corresponde a launch package. Note que o name define o nome que aparece aqui nessa lista de drop down. Note que eu cliquei na A no ícone de debugador executar e depurar o atalho é control chef de D. Bem vamos dar um olhado nisso bem o name é aquele que aparece na tela então type go você deixa assim mesmo request a launch certo. O modo de automático alto deixa assim mesmo program vai ser o caminho daquilo que vai rodar. Nesse caso está se referindo a essa variável aqui nesse place hold chamado file de nome. Agora esse file de nome corresponde ao diretório em que o arquivo por exemplo eu cliquei em em português eu rodei daqui. Esse arquivo está dentro de uma pasta essa pasta é que aparece aqui nesse vai ser o caminho para pasta. Mas como não tem um projeto definido com o golmode então deu o problema aqui então o que que eu vou fazer e veio de rodar da pasta toda só vou rodar no arquivo presente que está aberto nesse caso eu poderia modificar essa configuração ou eu posso copiar e colar e criar uma nova configuração para poder preservar essa que isso que eu vou fazer adicionar vírgula copio objeto. Nesse caso vai ser talvez file o arquivo qualquer nome que você quiser que apareça aqui tá deixa eu salvar esse arquivo mas antes do program invade file de nome vai ser file. Quando você coloca file ele corresponde o caminho do arquivo que está aberto isso que a gente quer rodar o debulador no arquivo que está aberto. Noto que meu caso é bem simples só tem um arquivo mas no caso de outros do seu projeto que tem vários arquivos você vai querer usar esse outro aqui e você vai ter que definir o golmode e tal e para que funcione ele que funciona e corretamente. Vou salvar arquivo note que agora quando eu clicar na aba do debulgador na drop down aqui. Tem também um long file o novo item que eu adicionei. Então de volta o arquivo main.gol eu posso que ou posso usar a drop down selecionar long file e clicar o botão de play. Note que ele rodou a bc. Olamundo inetação errada e assim por diante. Se eu clicar executar f5 também funciona da mesma maneira. Agora vamos aprender como colocar um breakpoint para poder a gente debugar. Antes disso eu tenho que para demonstração vou criar uma nova função aqui. E essa função vamos ver. Vou pegar letras aqui cortar. Vou retornar o string join letras dessa função. Return string.join retornar o que lembra do debutar o nome para ver a assinatura da função essa função aqui retornam a string. Então o fazer algo também vai retornar uma string. Coloquei o string ali. Agora vamos ver. Eu vou chamar o fazer algo aqui. Print ln. Vamos ver o que posso fazer. Na verdade deixa eu colocar no variável. Vai a mensagem tipo string e vou dizer que mensagem é fazer algo. Colocar assim. Se você quer fazer algo que está dando. Que clararam mas não usaram certo. E aqui eu vou colocar mensagem. Vamos supor que eu queira saber qual é o valor de retorno de mensagem. Posso colocar um ponto de breakpoint aqui na linha 16. Ele pode parar aqui. Logo após a execução da linha 15 que vai definir mensagem. Vamos rodar a long file f5. E ele vai pausar a execução do programa na linha 16 que tem o breakpoint. Você note que do lado esquerdo tem uma aba variáveis no caso variável local tem mensagem que o valor é abc. Mostra também a stack pilha de chamadas. No meu caso estou rodando da função main. E o resto é a stack. E aqui os pontos de parada. O breakpoint. No meu caso só tem um. A linha 16 do arquivo main.go. Bem então já sei que mensagem e abc esperavam ver isso certo. Também posso usar aqui essa terminazinha aqui embaixo com o sólido de depuração e posso dizer o nome da variável enter e ele também mostra o valor aqui. Para poder continuar para o próximo ponto de parada breakpoint f5. Deixe eu rodar o debugger de novo para te mostrar como é que eu posso e linha por linha. Linha por linha é essa segunda ícone aqui o chamado contornar o atalho é f10. Aperta f10 e ele vai para a próxima linha próximo statement né. F10 de novo. Validinha 19. Esse por diante. Continuar para aí. Vamos adicionar um ponto de partir o ponto de parada aqui na linha 9. E vamos rodar de novo. Note que ele parou primeiro na linha 9 da função fazer algo porque foi chamado da linha 15. Então ainda não chegou na linha 16. A linha aqui. Note que a variável local não tem letras ainda porque ele parou antes da execução do statement da linha 9. Para poder o letra ser definido a gente teria que ir para a próxima linha. Próximo statement. Isso é o f10 porque não tem breakpoint na linha 10. Mas é claro que se você adicionasse o breakpoint na linha 10 e clicasse o f5 continuar iria para a próxima linha. Mas se você não tiver ponto de parada na próxima linha é só dar o f10 que ele vai para a próxima linha. Você note que na aba de variáveis propriedade local temos agora letras. Se você expandir temos um array um slice de string tem três elementos primeiro a segundo b e terceiro c. Certo. Se eu clicar no continuar ele vai para o próximo ponto. Se eu clicar f10 vamos ver o que acontece. Então ele volta. Vai para o próximo statement que é a atribuição aqui. De o valor retornado fazer algo a mensagem. Note que o mensagem não tem nada ainda porque a linha de atribuição não executou ainda. Eu posso falar o continuar para a próxima linha que tem um ponto de parada. E agora a mensagem está definida. Se você quiser parar tudo e não quiser continuar para o próximo ponto pode dar o enterro p shift f5. Agora vou te mostrar também como é que entra no fazer algo sem ter o ponto lá. Então eu vou colocar aqui na linha 15 um ponto de parada e eu quero entrar na função fazer algo. Entrar no chamado em vez de ir para a próxima linha que é 16 eu quero entrar na execução de fazer algo. Vamos fazer isso. Vamos lá clica play para debugar. Então você note aqui se eu apertar o f5 o que acontece. Ele termina porque não tem mais nenhum ponto. Ele vai para o final executa tudo. Se eu dar o f10 ele vai para a próxima linha que é 16. E isso não vai para o fazer algo. A definição é para o final executa tudo. Isso não vai para o fazer algo. A definição é implementação. Note que tem outra opção aqui f11 e a opção de shift f11. Então vamos ver o que acontece eu da o intervi f11. Note que agora ele entrou aqui. Eu da o f10. Ah, então está indo na implementação de fazer algo. Letra definida. Se eu dar f10 volta para lá. Agora se eu dar vou parar e vou reiniciar para te mostrar como é que sai da função. Então vamos lá de novo. Vou entrar no fazer algo com f11. Entra na função na definição. Eu posso dar o f10 para a próxima linha e se pude antes. Mas agora eu queria sair do fazer algo sem ter que ir para a próxima linha. Como é que faz isso? Vai ser esse ícone de sair. Shift f11. O quarto ícone da esquerda para a direita que é a seta indo para cima. Se eu clicar nesse ícone ele vai sair da implementação e volta para onde foi chamado. Eu posso fazer isso também com o println. Vamos ver o que acontece. Eu vou dar f10 para ir para a próxima linha. Eu quero entrar no println. Eu vou dar o f11 para intervir. Agora eu estou dentro do println. Olha só. Que legal. Eu posso ver aqui que tem os argumentos nas variáveis locais n e a. Se eu dar o f10 para ir para a próxima linha. O n é zero e não tem erro. Se eu quiser sair o. Shift f11 e volta para lá. Tá. Eu vou parar aqui. Você pode se tiver vários pontos. Aparece aqui do lado aqui abaixo na aba de pontos de parada. Se você quiser desativar é só clicar no check no checkmark aqui nessa caixa de. Pois é. Se você checar significa que vai executar o breakpoint para desativar e não. E para esse breakpoint você pode desmarcar. Se você quiser realmente dela é tal o ponto de parada interrupção é só clicar no X. E também a remover todos remover todos os pontos se você não quiser clicar um por um. E pronto não tem mais nenhum. Não tem várias coisas aqui bem legal no divulgador. Então voltando que era antes. No pasta.vscode barra o arquivo launch.json define essas. Opções de rodar o divulgador. Nesse caso tem a. A propriedade configurations que é um array de várias. Configurações. Vários itens para ser rodado no divulgador que aparece aqui. Já tinha já foi criado automaticamente o launch package. Quando a gente tentou rodar o divulgador. Mas isso não funciona no meu caso porque é um arquivo. Sem ter ser parte de um projeto com arquivo GoMod então não é funcionar para mim para rodar o caminho da pasta em que o arquivo presente. Está dentro. Então eu tive que mudar em vez de referenciar o caminho da pasta. Eu referenci o caminho do arquivo que está aberto com o programa definido com o dólar. Abri chave. File fecha chave. Com isso aparece uma nova launch file nesse caso aqui rodar arquivo que eu criei. Você pode mudar o nome. Não precisa ser o mesmo nome. Parece qualquer nome que você queira que aparece aqui. Por isso por essa aula é só. Espero que tenha gostado. Não se esqueça de dar o seu like. Deixe comentário e até a próxima. Até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: