SlideShare uma empresa Scribd logo
1 de 28
Debugando em node
Por que? Como?
apresentação
por Jêniffer Nolasco e
Andressa Furlan
Devs PJBank
Jêniffer
Nolasco
Andressa
Furlan
Depurar é
importante?
Quanto?
Se você resolve problemas,
você é muito valioso. Quem
encontra e elimina
efetivamente erros e bugs é
assertivo e efetivo!
É aí que separamos o joio
do trigo, já que depurar é
uma skill essencial para
todo desenvolvedor.
A maioria dos
desenvolvedores,
mesmo os altamentes
experientes, se
questionam:
“Devo estudar
linguagens novas do
mercado?? Design
Patterns??”
E o engraçado é que a
maioria tendem a ser bem
péssimos debugando.
Uma coisa é escrever
um bom código,
outra é saber
depurar o código
mais ridículo que
você viu
na vida.
A boa notícia é que:
Assim como qualquer
outra skill. Podemos
aprender.
Mas atenção!!
Debugar não é só
mexer em um depurador
e alterar o código até
que ele pareça funcionar.
É um processo que
requer análise e
precisamos ter clareza.
Conhecer o negócio é
fundamental para fazer
uma análise de impacto
e assim sermos
efetivos.
Caso Prático
Caso Prático
Guia rápido
1. Reproduzir o bug.
100% dos problemas que não podem ser
reproduzidos, não podem ser debugados.
1. Caso não consiga fazer o 1º
passo, procure ajuda.
Peça para quem registrou o bug,
reproduzir para você.
But...
Guia rápido
3.Se o bug for intermitente.
Isso significa que você não
conhece as circunstâncias
necessárias para reproduzi-lo.
Se é um problema, conseguimos
reproduzir, só precisamos saber como.
Guia rápido
4. Encontre como
reproduzir o problema, mesmo
que ele seja reproduzível
apenas em produção.
Se você não entender o problema o
suficiente para recriá-lo, você tem uma
chance muito baixa, de corrigi-lo
acidentalmente por um palpite e terá
muita dificuldade em saber se sua
correção funcionou.
Guia rápido
5. Antes de entrar no
código e “ver as coisas”.
Pensem no problema e as
possíveis causas. Você terá
hipóteses ou idéias. Mesmo
assim, se não tiver noção,
ativem o Rubber duck.
Guia rápido
6. Quando tiverem 2 ou 3
hipóteses, criem testes
unitários.
Ao escrever o teste de unidade considere
explorar o problema. Com isso se você
estiver certo e encontrar o problema além
de corrigi-lo ainda terá um teste que
verifica a correção. E mesmo se você
estiver errado, acabou de deixar seu
sistema mais confiável adicionando
testes. :)
Guia rápido
6. Caso seja extremamente
impossível de criar os testes
para as hipóteses.
Hora de ativar o debugger.
Mas saiba exatamente o que está
procurando. Não adianta usá-lo para dar
“uma olhada”.
Guia rápido
7. Dividir para conquistar.
Tente pensar em maneiras de eliminar
uma grande quantidade de código ou
remover uma grande quantidade do
sistema ou variáveis ​​e ainda assim
reproduzir o bug.
Last one...
8. Entenda o por que
corrigiu o problema.
Se você não entender por que o que fez
corrigiu o problema, ainda não terminou.
Você pode ter causado sem querer um
problema diferente ou, muito
provavelmente, não corrigiu o problema
original.
Os problemas não desaparecem por
conta própria.
Como
Utilizar o
Debugger
no VSCode
Abrindo a aba Debug
Para abrir a visualização Debug,
selecione o ícone Debug ( ) na
barra de atividades ao lado do VS
Code.
Atalho: Ctrl + Shift + D
Criando o launch.json
O VSCode mantém as configurações de
depuração em um arquivo launch.json
localizado na pasta .vscode em seu
espaço de trabalho (pasta raiz do projeto).
Para criar um arquivo launch.json, abra a
pasta do projeto no VSCode ( Arquivo >
Abrir pasta ) e selecione o ícone ( ) de
configuração na barra superior de exibição
do Debug.
Launch / Attach
No VS Code, existem dois modos principais
de depuração, Launch e Attach.
A diferença entre eles é que launch oferece
suporte a inicialização de um programa em
modo debug, enquanto attach se encarrega
de conectar com um aplicativo ou
processo já em execução.
Dependendo do tipo da configuração, são
necessários diferentes atributos.
Configurações prontas:
https://code.visualstudio.com/docs/nodejs
/debugging-recipes
Atributos
Launch / Attach
protocol - protocolo de depuração para usar. auto / inspector (>= 6.3) / legacy
port - porta de depuração para usar
address - Endereço TCP / IP da porta de depuração.
sourceMaps - habilita trocando para true.
outFiles - localiza arquivos JavaScript gerados.
restart - reinicie a sessão no término
timeout - ao reiniciar uma sessão, desista após esse número de milissegundos,stopOnEntry -
para imediatamente quando o programa é inicializado.
localRoot - Diretorio raiz do VSCode
remoteRoot - Diretorio raiz do Node.
skipFiles - automaticamente pula os arquivos listados
trace - habilita outputs para diagnóstico.
Atalho: (Ctrl+Space)
Breakpoints
O recurso de depuração usando Breakpoint
(Ponto de Parada) é muito útil no
desenvolvimento, já que assim podemos
“navegar” e descobrir o que acontece em
nosso código, em tempo de execução, linha
a linha.
Os breakpoints podem ser adicionados (ou
removidos) ao clicar na margem esquerda
do editor. Nesse momento eles são
automaticamente listados na barra de
debug, com a indicação do arquivo e da
linha onde está localizado.
Variables / Watch
Na exibição do Debug existem duas outras
seções chamadas de Variables e Watch
Em Variables, como o nome já diz, as
variáveis marcadas com breakpoint podem
ser inspecionadas e exibidas nessa sessão
ou simplesmente passando o mouse em
cima dela no editor.
Em Watch, você pode adicionar variáveis que
deseja inspecionar seu estado durante toda a
execução da aplicação pelo Debug.
OBRIGADO
a todos.
jeniffer.ferreira@superlogica.com
andressa.furlan@superlogica.com
git clone
git@github.com:gtsopour/no
dejs-shopping-cart.git

Mais conteúdo relacionado

Mais procurados

Crackeando aplicativos no android _by c0_m3nd4d0r
Crackeando aplicativos no android  _by c0_m3nd4d0rCrackeando aplicativos no android  _by c0_m3nd4d0r
Crackeando aplicativos no android _by c0_m3nd4d0rnunes666
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Robson Bittencourt
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Robson Agapito Correa
 
Logging Patterns & Anti-Patterns
Logging Patterns & Anti-PatternsLogging Patterns & Anti-Patterns
Logging Patterns & Anti-PatternsÉdipo Souza
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelManoel Pimentel Medeiros
 
JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - SeleniumCaue Guerra
 
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...iPhoneDevBr
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosVIVIANE RANGEL
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Rômulo Augusto Santos
 
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...Elias Souza
 
NuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NETNuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NETVinicius Quaiato
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 

Mais procurados (19)

Crackeando aplicativos no android _by c0_m3nd4d0r
Crackeando aplicativos no android  _by c0_m3nd4d0rCrackeando aplicativos no android  _by c0_m3nd4d0r
Crackeando aplicativos no android _by c0_m3nd4d0r
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
Desenvolvimento de builds automizados com Jenkins - Em Busca do build Perfeito!
 
Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.Mutant Testing: um mundo para um X-Testing.
Mutant Testing: um mundo para um X-Testing.
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
TDD em 220V
TDD em 220VTDD em 220V
TDD em 220V
 
Logging Patterns & Anti-Patterns
Logging Patterns & Anti-PatternsLogging Patterns & Anti-Patterns
Logging Patterns & Anti-Patterns
 
Implementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel PimentelImplementando Testes Unitários em Java - Manoel Pimentel
Implementando Testes Unitários em Java - Manoel Pimentel
 
JUnit - Selenium
JUnit - SeleniumJUnit - Selenium
JUnit - Selenium
 
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
 
Realizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitosRealizando a gestão de testes e o controle de defeitos
Realizando a gestão de testes e o controle de defeitos
 
Testlink apresentacao
Testlink apresentacaoTestlink apresentacao
Testlink apresentacao
 
Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.Test Driven Development (TDD) para seres humanos.
Test Driven Development (TDD) para seres humanos.
 
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...TDC Florianópolis 2013  - Refatorar! porque ninguém gosta de código que cheir...
TDC Florianópolis 2013 - Refatorar! porque ninguém gosta de código que cheir...
 
Apostila sobre o Visualg
Apostila sobre o VisualgApostila sobre o Visualg
Apostila sobre o Visualg
 
01 java fundamentos
01 java fundamentos01 java fundamentos
01 java fundamentos
 
NuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NETNuGet - Gerenciando dependências em .NET
NuGet - Gerenciando dependências em .NET
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 

Semelhante a Debugging node

Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Dez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugsDez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugsPaulo Mattos
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com JavajesuinoPower
 
Softblue logic-ide
Softblue logic-ideSoftblue logic-ide
Softblue logic-idemateusvini
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com PythonDorneles Treméa
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshopguestd37c23
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da pesteMichele Silva
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...iMasters
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Chrome dev tools google io extended 2016
Chrome dev tools   google io extended 2016Chrome dev tools   google io extended 2016
Chrome dev tools google io extended 2016Diego Melo
 
Visualg 1231617089791929-2
Visualg 1231617089791929-2Visualg 1231617089791929-2
Visualg 1231617089791929-2jaoozinhoqi123
 

Semelhante a Debugging node (20)

Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
Dez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugsDez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugs
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com Java
 
Softblue logic-ide
Softblue logic-ideSoftblue logic-ide
Softblue logic-ide
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com Python
 
Refactory Worshop
Refactory WorshopRefactory Worshop
Refactory Worshop
 
Teste cabra da peste
Teste cabra da pesteTeste cabra da peste
Teste cabra da peste
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Prototipagem
PrototipagemPrototipagem
Prototipagem
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Chrome dev tools google io extended 2016
Chrome dev tools   google io extended 2016Chrome dev tools   google io extended 2016
Chrome dev tools google io extended 2016
 
Visualg 1231617089791929-2
Visualg 1231617089791929-2Visualg 1231617089791929-2
Visualg 1231617089791929-2
 

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 

Último (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Debugging node

  • 1. Debugando em node Por que? Como? apresentação por Jêniffer Nolasco e Andressa Furlan Devs PJBank
  • 4. Se você resolve problemas, você é muito valioso. Quem encontra e elimina efetivamente erros e bugs é assertivo e efetivo! É aí que separamos o joio do trigo, já que depurar é uma skill essencial para todo desenvolvedor.
  • 5. A maioria dos desenvolvedores, mesmo os altamentes experientes, se questionam: “Devo estudar linguagens novas do mercado?? Design Patterns??”
  • 6. E o engraçado é que a maioria tendem a ser bem péssimos debugando. Uma coisa é escrever um bom código, outra é saber depurar o código mais ridículo que você viu na vida.
  • 7. A boa notícia é que: Assim como qualquer outra skill. Podemos aprender.
  • 8. Mas atenção!! Debugar não é só mexer em um depurador e alterar o código até que ele pareça funcionar.
  • 9. É um processo que requer análise e precisamos ter clareza. Conhecer o negócio é fundamental para fazer uma análise de impacto e assim sermos efetivos.
  • 12. Guia rápido 1. Reproduzir o bug. 100% dos problemas que não podem ser reproduzidos, não podem ser debugados. 1. Caso não consiga fazer o 1º passo, procure ajuda. Peça para quem registrou o bug, reproduzir para você. But...
  • 13. Guia rápido 3.Se o bug for intermitente. Isso significa que você não conhece as circunstâncias necessárias para reproduzi-lo. Se é um problema, conseguimos reproduzir, só precisamos saber como.
  • 14. Guia rápido 4. Encontre como reproduzir o problema, mesmo que ele seja reproduzível apenas em produção. Se você não entender o problema o suficiente para recriá-lo, você tem uma chance muito baixa, de corrigi-lo acidentalmente por um palpite e terá muita dificuldade em saber se sua correção funcionou.
  • 15. Guia rápido 5. Antes de entrar no código e “ver as coisas”. Pensem no problema e as possíveis causas. Você terá hipóteses ou idéias. Mesmo assim, se não tiver noção, ativem o Rubber duck.
  • 16. Guia rápido 6. Quando tiverem 2 ou 3 hipóteses, criem testes unitários. Ao escrever o teste de unidade considere explorar o problema. Com isso se você estiver certo e encontrar o problema além de corrigi-lo ainda terá um teste que verifica a correção. E mesmo se você estiver errado, acabou de deixar seu sistema mais confiável adicionando testes. :)
  • 17. Guia rápido 6. Caso seja extremamente impossível de criar os testes para as hipóteses. Hora de ativar o debugger. Mas saiba exatamente o que está procurando. Não adianta usá-lo para dar “uma olhada”.
  • 18. Guia rápido 7. Dividir para conquistar. Tente pensar em maneiras de eliminar uma grande quantidade de código ou remover uma grande quantidade do sistema ou variáveis ​​e ainda assim reproduzir o bug.
  • 19. Last one... 8. Entenda o por que corrigiu o problema. Se você não entender por que o que fez corrigiu o problema, ainda não terminou. Você pode ter causado sem querer um problema diferente ou, muito provavelmente, não corrigiu o problema original. Os problemas não desaparecem por conta própria.
  • 21. Abrindo a aba Debug Para abrir a visualização Debug, selecione o ícone Debug ( ) na barra de atividades ao lado do VS Code. Atalho: Ctrl + Shift + D
  • 22. Criando o launch.json O VSCode mantém as configurações de depuração em um arquivo launch.json localizado na pasta .vscode em seu espaço de trabalho (pasta raiz do projeto). Para criar um arquivo launch.json, abra a pasta do projeto no VSCode ( Arquivo > Abrir pasta ) e selecione o ícone ( ) de configuração na barra superior de exibição do Debug.
  • 23. Launch / Attach No VS Code, existem dois modos principais de depuração, Launch e Attach. A diferença entre eles é que launch oferece suporte a inicialização de um programa em modo debug, enquanto attach se encarrega de conectar com um aplicativo ou processo já em execução. Dependendo do tipo da configuração, são necessários diferentes atributos. Configurações prontas: https://code.visualstudio.com/docs/nodejs /debugging-recipes
  • 24. Atributos Launch / Attach protocol - protocolo de depuração para usar. auto / inspector (>= 6.3) / legacy port - porta de depuração para usar address - Endereço TCP / IP da porta de depuração. sourceMaps - habilita trocando para true. outFiles - localiza arquivos JavaScript gerados. restart - reinicie a sessão no término timeout - ao reiniciar uma sessão, desista após esse número de milissegundos,stopOnEntry - para imediatamente quando o programa é inicializado. localRoot - Diretorio raiz do VSCode remoteRoot - Diretorio raiz do Node. skipFiles - automaticamente pula os arquivos listados trace - habilita outputs para diagnóstico. Atalho: (Ctrl+Space)
  • 25. Breakpoints O recurso de depuração usando Breakpoint (Ponto de Parada) é muito útil no desenvolvimento, já que assim podemos “navegar” e descobrir o que acontece em nosso código, em tempo de execução, linha a linha. Os breakpoints podem ser adicionados (ou removidos) ao clicar na margem esquerda do editor. Nesse momento eles são automaticamente listados na barra de debug, com a indicação do arquivo e da linha onde está localizado.
  • 26. Variables / Watch Na exibição do Debug existem duas outras seções chamadas de Variables e Watch Em Variables, como o nome já diz, as variáveis marcadas com breakpoint podem ser inspecionadas e exibidas nessa sessão ou simplesmente passando o mouse em cima dela no editor. Em Watch, você pode adicionar variáveis que deseja inspecionar seu estado durante toda a execução da aplicação pelo Debug.

Notas do Editor

  1. Depurar é encontrar a origem de um problema em uma base de código, identificar as possíveis causas, testar hipóteses até que a causa raiz final seja encontrada, eliminar essa causa e garantir que nunca mais aconteça.
  2. 1- É meio óbvio, mas mesmo que tenha corrigido, se não consegue reproduzir, não tem como saber !!!
  3. 3.Reunir mais evidências. regsitre instruções de log. Reúna o máximo de detalhes possível sobre quando o problema ocorre e sob quais condições ele ocorre. Então recrie artificialmente o ambiente e as circunstâncias, se puder.
  4. Método de depuração - Referência ao livro Programador pragmático.