You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/01-debugging-chrome/article.md
+19-21
Original file line number
Diff line number
Diff line change
@@ -2,35 +2,35 @@
2
2
3
3
Antes de escrevermos código mais complexo, precisamos falar de debugging (depuração de erros).
4
4
5
-
[Depuração](https://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o) é o processo de procura e correção de erros em um dado programa. Todos os navegadores (*browsers*) modernos e muitas outras plataformas (*environments*) suportam ferramentas de (*debugging*) -- uma UI (Interface de Usuário) especial, também encontra-se disponível nas ferramentas do desenvolvedor (*developer tools*) tornando assim, a depuração de erros muito mais fácil. Ela também permite rastrear o código passo-a-passo para entender exatamente o que está sendo executado.
5
+
[Depuração](https://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o) é o processo de procura e correção de erros em um dado programa. Todos os navegadores (*browsers*) modernos e muitas outras plataformas (*environments*) suportam ferramentas de (*debugging*) -- uma UI (Interface de Usuário) especial que está disponível nas ferramentas do desenvolvedor (*developer tools*) tornando assim, a depuração de erros muito mais fácil. Ela também permite rastrear o código passo-a-passo para entender exatamente o que está sendo executado.
6
6
7
-
Aqui, vamos utilizar o navegador Google Chrome dado suas funcionalidades, porém, a maioria dos navegadores atuais possuem recursos similares.
7
+
Aqui, vamos utilizar o navegador Google Chrome dadas as suas muitas funcionalidades, porém, a maioria dos navegadores atuais possui recursos similares.
8
8
9
-
## Sources
9
+
## O painel *Sources*
10
10
11
-
Devido a versão do seu Chrome, partes da interface podem parecer diferentes mas ainda assim deverá ser óbvio tudo que encontra-se lá.
11
+
Devido à versão do seu Chrome, partes da interface podem parecer diferentes mas ainda assim deverá ser possível entender o que lá encontrar.
12
12
13
13
- Abra a [página exemplo](debugging/index.html) no Chrome.
14
14
- Ative as ferramentas do desenvolvedor com `key:F12` (Mac: `key:Cmd+Opt+I`).
15
15
- Selecione o painel `Sources`.
16
16
17
-
Aqui está o que poderá ser visto caso esteja a faze-lo pela primeira vez:
17
+
Aqui está o que poderá ser visto caso esteja a fazê-lo pela primeira vez:
18
18
19
19

20
20
21
21
O botão de alternar <spanclass="devtools"style="background-position:-172px-98px"></span> abre o separador com os arquivos.
22
22
23
-
Vamos clicar nele e selecionar `hello.js` na representação da árvore de recursos aberta. Abaixo está o que você deve encontrar:
23
+
Vamos clicar nele e selecionar `hello.js` na representação da árvore de recursos aberta. Abaixo está o que você poderá encontrar:
24
24
25
25

26
26
27
27
O painel *Sources* possui 3 partes:
28
28
29
-
1. O painel **Navegador de Arquivos** (*File Navigator*), lista arquivoss HTML, JavaScript, CSS e outros. Inclui Imagens anexadas à página e Extensões do Google Chrome (*Chrome extensions*) também podem aparecer aqui.
29
+
1. O painel **Navegador de Arquivos** (*File Navigator*), lista arquivos HTML, JavaScript, CSS e outros. Inclui Imagens anexadas à página e Extensões do Google Chrome (*Chrome extensions*) também podem aparecer aqui.
30
30
2. O painel **Editor de Código** (*Code Editor*), mostra o código-fonte do arquivo selecionado.
31
31
3. O painel **Depuração do Javascript** (*JavaScript Debugging*) serve para a depuração de erros. Iremos explorá-lo em breve.
32
32
33
-
Agora, é possível clicar novamente no mesmo botão de alternador <spanclass="devtools"style="background-position:-172px-122px"></span> para ocultar a lista de recursos e dar ao código algum espaço.
33
+
Agora, é possível clicar novamente no mesmo botão de alternar <spanclass="devtools"style="background-position:-172px-122px"></span> para ocultar a lista de recursos e dar ao código algum espaço.
34
34
35
35
## Console
36
36
@@ -44,17 +44,17 @@ Por exemplo, a instrução `1+2` resultará em `3`, enquanto a chamada de funç
44
44
45
45
## Breakpoints
46
46
47
-
Vamos examinar o que se passa dentro do código da [página exemplo](debugging/index.html). No arquivo `hello.js`, clique no número referente a linha `4`. Sim, exatamente sobre o dígito `4`, não sobre o código.
47
+
Vamos examinar o que se passa dentro do código da [página exemplo](debugging/index.html). No arquivo `hello.js`, clique no número referente à linha `4`. Sim, exatamente sobre o dígito `4`, não sobre o código.
48
48
49
-
Parabéns! Um ponto-de-interrupção (*breakpoint*) foi criado. Clique também no número referente a linha `8`, Por favor.
49
+
Parabéns! Um ponto-de-interrupção (*breakpoint*) foi criado. Clique também no número referente a linha `8`, por favor.
50
50
51
-
Deve se parecer com isto (dígitos de cor azul é onde deveria ter sido clicado):
51
+
Deve se parecer com isto (dígitos de cor azul é onde deveria ter clicado):
52
52
53
53

54
54
55
55
Um *breakpoint* é um ponto no código onde o depurador de erros (*debugger*) irá, automáticamente, efetuar uma pausa na execução do JavaScript.
56
56
57
-
Enquanto a execução do código estiver suspensa, é possível examinar valores de variáveis, executar comandos no terminal e etc. Em outras palavras, depurar erros (*debug it*).
57
+
Enquanto a execução do código estiver suspensa, é possível examinar valores de variáveis, executar comandos no terminal, etc. Em outras palavras, depurar erros (*debug it*).
58
58
59
59
Uma lista de *breakpoints* sempre estará disponível no painel à direita. Muito útil quando existem diferentes *breakpoints* em vários arquivos. Essa lista permite:
60
60
- Rápidamente saltar para a linha do *breakpoint* no código (ao clicar sobre ele no painel à direita).
@@ -84,13 +84,11 @@ function hello(name) {
84
84
}
85
85
```
86
86
87
-
É muito conveniente quando estivermos num editor de código e não quisermos mudar para o navegador, e de seguida, nas ferramentas do desenvolvedor deste, procurar no programa (*script*) pelo local onde colocar o breakpoint.
88
-
89
87
Este comando só irá funcionar quando a interface de ferramentas de desenvolvedor do navegador estiver aberta, caso contrário, será ignorado.
90
88
91
89
## Pause e dê uma olhada
92
90
93
-
No nosso exemplo, a função `hello()` é chamada durante o carregamento da página, assim a forma mais fácil para ativar o *debugger* (depois de termos colocado os *breakpoints*), seria recarregar a página. Desta forma, vamos pressionar `key:F5` (Windows, Linux) ou `key:Cmd+R` (Mac).
91
+
No nosso exemplo, a função `hello()` é chamada durante o carregamento da página, assim a forma mais fácil para ativar o *debugger* (depois de termos colocado os *breakpoints*) seria recarregar a página. Desta forma, vamos pressionar `key:F5` (Windows, Linux) ou `key:Cmd+R` (Mac).
94
92
95
93
Após recarregar, como o breakpoint estará estabelecido, será feita uma pausa na execução na quarta linha:
96
94
@@ -104,7 +102,7 @@ Por favor, abra as secções de *dropdown* informacionais à direita (apontadas
104
102
105
103
2.**`Call Stack` -- mostra a sequência de chamadas de funções aninhadas.**
106
104
107
-
No presente momento, o *debugger* está dentro da chamada da função `hello()`, invocada por um código em `index.html` (não a partir de uma função, por isso o nome "*anonymous*" [anónimo]).
105
+
No presente momento, o *debugger* está dentro da chamada da função `hello()`, invocada por código em `index.html` (não a partir de uma função, por isso o nome "*anonymous*" [anónimo]).
108
106
109
107
Se clicar num item nessa pilha (*stack*) (por exemplo, em "*anonymous*"), o *debugger* saltará para o código correspondente e todas as suas variáveis poderão ser igualmente examinadas.
110
108
3.**`Scope` -- variáveis atuais.**
@@ -138,14 +136,14 @@ Existem botões para isso no topo do painel direito. Vamos interagir com eles.
138
136
<spanclass="devtools"style="background-position:-62px-192px"></span> -- "Step over": execute o próximo comando, *mas não vá para dentro de uma função*, atalho `key:F10`.
139
137
: Similar ao comando "Step" anterior mas com um comportamento diferente se a próxima instrução for uma chamada de função. Isto é: não uma incorporada (*built-in*), como `alert`, mas uma função nossa.
140
138
141
-
O comando "Step", vai para dentro da próxima função aninhada (*nested function*) e suspende a execução na sua primeira linha, ao contrário de "Step over" que executa essa chamada de função aninhada de forma invisível para nós, pulando todo seu funcionamento interno.
139
+
O comando "Step", vai para dentro dessa função e suspende a execução na sua primeira linha, ao contrário de "Step over" que executa essa chamada de função aninhada de forma invisível para nós, pulando todo seu funcionamento interno.
142
140
143
141
É feita uma pausa na execução imediatamente depois dessa função.
144
142
145
143
É util quando não se está interessado em ver o que acontece dentro da chamada de uma função.
: Similar a "Step" mas com um comportamento diferente no caso de chamadas de funções assíncronas. Se estiver começando a aprender JavaScript, pode ignorar a diferença no momento dado que ainda não temos chamadas assíncronas.
146
+
: Similar a "Step" mas com um comportamento diferente no caso de chamadas de funções assíncronas. Se estiver começando a aprender JavaScript, poderá ignorar a diferença porque ainda não vimos chamadas assíncronas.
149
147
150
148
Para o futuro, apenas tome nota que o comando "Step" ignora ações assíncronas, tais como `setTimeout` (chamada de função agendada), que são executadas mais tarde. O "Step into", vai para dentro do código destas funções assíncronas e aguarda a execução se necessário. Para mais detalhes, veja o [DevTools manual](https://developers.google.com/web/updates/2018/01/devtools#async).
151
149
@@ -156,7 +154,7 @@ Existem botões para isso no topo do painel direito. Vamos interagir com eles.
156
154
: Esse botão não move a execução. Simplesmente ativa/desativa *breakpoints* em conjunto.
157
155
158
156
<spanclass="devtools"style="background-position:-90px-146px"></span> -- ativar/desativar a pausa automática em caso de erro.
159
-
: Quando ativo e as ferramentas do desenvolvedor abertas, um erro no código automáticamente suspende a execução do código. Assim permitindo a análise de variáveis para entender o que ocorreu de errado. Desta forma, se o código falhar por um erro, é possível abrir o *debugger*, ativar esta opção e recarregar a página afim de se observar onde e em qual contexto a falha ocorreu.
157
+
: Quando ativo e as ferramentas do desenvolvedor abertas, um erro no código automáticamente suspende a execução do código. Assim permitindo a análise de variáveis para entender o que ocorreu de errado. Desta forma, se o código falhar por um erro, é possível abrir o *debugger*, ativar esta opção e recarregar a página afim de se observar onde e em que contexto a falha ocorreu.
160
158
161
159
```smart header="Continue até aqui"
162
160
Ao clicar com o botão direito do mouse sobre uma linha de código, abre-se o menu de contexto com uma ótima opção chamada "Continue até aqui" (*Continue to here*).
@@ -188,10 +186,10 @@ Como podemos ver, existem três formas principais para pausar a execução de um
188
186
2. As instruções `debugger`.
189
187
3. Um erro (se as ferramentas do desenvolvedor [*dev tools*] estiverem abertas, e o botão <spanclass="devtools"style="background-position:-90px-146px"></span> estiver "ativo").
190
188
191
-
Enquanto suspenso, podemos depurar erros - examinar variáveis e rastear o código para ver qual parte da execução ocorre de forma inesperada.
189
+
Enquanto suspenso, podemos depurar erros - examinar variáveis e rastear o código para ver que parte da execução ocorre com erros.
192
190
193
191
Existem muitas outras opções nas ferramentas do desenvolvedor além das já cobertas ao longo desta leitura. O manual completo está em <https://developers.google.com/web/tools/chrome-devtools>.
194
192
195
193
A informação neste capítulo é suficiente para iniciar a depuração de erros (o *debugging*), porém, especialmente se trabalhar muito com o navegador (*browser*), por favor consulte o manual e procure por recursos mais avançados das ferramentas do desenvolvedor.
196
194
197
-
Oh, também é possível clicar em vários locais nas ferramentas do desenvolvedor (*dev tools*) e ver o que acontece. Provávelmente, é a rota mais rápida para aprender todos os recursos existentes. Não se esqueça de também clicar com o botão direito do mouse e dos menus de contexto!
195
+
Oh, também é possível clicar em vários locais nas ferramentas do desenvolvedor (*dev tools*) e ver o que acontece. Provávelmente, é a rota mais rápida para aprender muitos dos recursos existentes. Não se esqueça de também clicar com o botão direito do mouse e dos menus de contexto!
0 commit comments