Skip to content

Commit b64406d

Browse files
authored
Merge pull request #161 from longo-andrea/feature/debuggin-chrome
Debugging Chrome
2 parents 51dd66e + 000a7d6 commit b64406d

File tree

1 file changed

+40
-24
lines changed
  • 1-js/03-code-quality/01-debugging-chrome

1 file changed

+40
-24
lines changed

1-js/03-code-quality/01-debugging-chrome/article.md

Lines changed: 40 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Prima di scrivere codice più complesso, dovremmo parlare di debugging.
44

5-
[Debugging](https://en.wikipedia.org/wiki/Debugging) è il processo che prevede di trovare e sistemare gli errori all'interno di uno script. Tutti i browser moderni e molti altri ambienti forniscono strumenti per il debugging -- degli speciali strumenti che rendono il debugging un operazione più semplice. Consentono anche di seguire l'esecuzione del codice passo per passo, per capire esattamente cosa sta accadendo..
5+
[Debugging](https://en.wikipedia.org/wiki/Debugging) è il processo che prevede la ricerca e la risoluzione degli errori all'interno di uno script. Tutti i browser moderni e molti altri ambienti forniscono strumenti per il debugging -- degli speciali strumenti che rendono il debugging un operazione più semplice. Consentono anche di seguire l'esecuzione del codice passo per passo, per capire esattamente cosa sta accadendo..
66

77
Noi useremo Chrome, poiché è probabilmente il più ricco di caratteristiche sotto questo aspetto.
88

@@ -28,7 +28,7 @@ Possiamo vedere tre zone:
2828

2929
1. La **zona Risorse** con la lista degli HTML, JavaScript, CSS e altri file, incluse le immagini che sono collegate alla pagina. Potrebbero apparire anche le estensioni di Chrome.
3030
2. La **zona Sorgente** mostra il codice.
31-
3. La **zona Informazione e controllo** utile per il debugging, la esplerermo meglio.
31+
3. La **zona Informazione e controllo** utile per il debugging, la esploreremo meglio.
3232

3333
Ora puoi cliccare nuovamente lo stesso bottone <span class="devtools" style="background-position:-200px -76px"></span> per nascondere la lista risorse e dare più spazio al codice.
3434

@@ -54,10 +54,10 @@ Dovrebbe apparire qualcosa di simile (in blu dove avreste dovuto cliccare):
5454

5555
Un *breakpoint* è un punto del codice in cui il debugger si metterà in pausa automaticamente durante l'esecuzione del codice JavaScript.
5656

57-
Mentre il codice è in pause, è possibile esaminare le variabili, eseguire comandi tramite la console etc. In altre parole, possiamo eseguire il debug.
57+
Mentre il codice è in pausa, è possibile esaminare le variabili, eseguire comandi tramite la console etc. In altre parole, stiamo facendo debugging.
5858

5959
Possiamo anche visualizzare la lista dei breakpoint nel pannello di destra. Questo pannello può risultare utile quando abbiamo più breakpoint in file diversi. Infatti ci consente di:
60-
- Salatare rapidamente ad un breakpoint (cliccando sopra al nome del breakpoint che ci interessa).
60+
- Saltare rapidamente ad un breakpoint (cliccando sopra al nome del breakpoint che ci interessa).
6161
- Disabilitare temporaneamente un breakpoint semplicemente togliendo la spunta.
6262
- Rimuovere breakpoint cliccando con il tasto destro e selezionando Rimuovi.
6363
- ...E molto altro.
@@ -77,35 +77,35 @@ function hello(name) {
7777
let phrase = `Hello, ${name}!`;
7878

7979
*!*
80-
debugger; // <-- il debugger si ferma qui
80+
debugger; // <-- il codice si metterà in pausa qui
8181
*/!*
8282

8383
say(phrase);
8484
}
8585
```
8686

87-
Questo risulta molto utile quando stiamo lavorando in un editor e non vogliamo passare alla finestra del browser, cercare il punto corretto nello script interessato e settare il breakpoint.
87+
Questo risulta molto utile quando stiamo lavorando in un editor e non vogliamo passare alla finestra del browser, cercare il punto corretto nello script interessato e impostare il breakpoint.
8888

8989

90-
## Pausa per guardarsi attorno
90+
## Interrompere l'esecuzione e guardarsi intorno
9191

9292
Nel nostro esempio, `hello()` viene richiamato durante il caricamento della pagina, quindi il metodo più facile per attivare il debugger è ricaricare la pagina. Quindi premete `key:F5` (Windows, Linux) o `key:Cmd+R` (Mac).
9393

9494
Con il breakpoint impostato, l'esecuzione si fermerà alla quarta linea:
9595

9696
![](chrome-sources-debugger-pause.svg)
9797

98-
Ora aprite i menu a cascata (quelli con la freccetta accanto al nome). Vi consentiranno di esaminare lo stato corrente del codice:
98+
Ora aprite il menu a cascata (quello con la freccetta accanto al nome). Ti consentirà di esaminare lo stato corrente del codice:
9999

100100
1. **`Watch` -- mostra il valore corrente per ogni espressione.**
101101

102102
Puoi cliccare su `+` e inserire un espressione. Il debugger ti mostrerà il suo valore ad ogni istante, che verrà automaticamente ricalcolato durante l'esecuzione.
103103

104104
2. **`Call Stack` -- mostra la catena delle chiamate annidate.**
105105

106-
Attualmente il debugger si trova all'interno della chiamata `hello()`, chiamata da uno script interno a `index.html` (non ci sono funzioni qui, quindi viene definito "anonimo").
106+
Attualmente il debugger si trova all'interno della chiamata `hello()`, chiamata da uno script interno a `index.html` (non ci sono funzioni qui, quindi viene definita "anonima").
107107

108-
Se premi su un elemento della pila, il debugger salterà al codice corrispondente, e potranno essere esaminate tutte le variabili.
108+
Se premi su un elemento della pila, il debugger salterà al codice corrispondente, e potrai esaminare tutte le variabili.
109109
3. **`Scope` -- variabili correnti.**
110110

111111
`Local` mostra le variabili locali alla funzione. Potente anche vedere i valori evidenziati nel codice.
@@ -120,29 +120,45 @@ Ora è il momento di *tracciare* lo script.
120120

121121
Ci sono dei bottoni appositi nella parte superiore del pannello di destra. Proviamo ad attivarli.
122122
<!-- https://github.com/ChromeDevTools/devtools-frontend/blob/master/front_end/Images/src/largeIcons.svg -->
123-
<span class="devtools" style="background-position:-146px -168px"></span> -- continua l'esecuzione, tasto `key:F8`.
123+
<span class="devtools" style="background-position:-146px -168px"></span> -- "Resume": continua l'esecuzione, tasto `key:F8`.
124124
: Riprende l'esecuzione. Se non ci sono ulteriori breakpoint l'esecuzione continua e il debugger non avrà più il controllo.
125125

126-
Questo e quello che vedremo dopo aver cliccato:
126+
Questo è quello che vedremo dopo aver cliccato:
127127

128128
![](chrome-sources-debugger-trace-1.svg)
129129

130-
L'esecuzione è ripartita, ha incontrato un altro breakpoint dentro `say()` e si è fermato nuovamente. Diamo un'occhiata al "Call stack" sulla destra. E' stato incrementato con un ulteriore chiamata. Ora siamo all'interno di `say()`.
130+
L'esecuzione è ripartita, ha incontrato un altro breakpoint dentro `say()` e si è fermata nuovamente. Diamo un'occhiata al "Call stack" sulla destra. E' stato incrementato con un ulteriore chiamata. Ora siamo all'interno di `say()`.
131131

132-
<span class="devtools" style="background-position:-137px -76px"></span> -- fa un singolo step (esegue il comando successivo), ma non *entra nella funzione*, tasto `key:F10`.
133-
: Se lo clicchiamo ora, verrà mostrato `alert`. La cosa importante è che `alert` potrebbe essere una funzione qualsiasi, l'esecuzione farebbe "uno step oltre" comunque, saltando l'interno della funzione.
132+
<span class="devtools" style="background-position:-200px -190px"></span> -- "Step": esegue il prossimo comando, hotkey `key:F9`.
133+
: Esegue la prossima istruzione. Se lo clicchiamo, verrà mostrato l'`alert`.
134+
135+
Continuando a cliccare eseguiremo lo script un passo per volta.
136+
137+
<span class="devtools" style="background-position:-62px -192px"></span> -- "Step over": esegue il prossimo comando, ma *non entra nella funzione*, hotkey `key:F10`.
138+
: Molto simile al comando "Step", ma si comporta diversamente nel caso in cui la prossima istruzione sia una chiamata a funzione. Cioè: non una funzione built-in come `alert`, ma una funzione definita da noi.
139+
140+
Il comando "Step" entra nella funzione e mette in pausa l'esecuzione, mentre "Step over" esegue la chiamata a funzione, saltandone il contenuto.
141+
142+
L'esecuzione viene interrotta al termine della chiamata.
143+
144+
Questo è molto utile se non siamo interessati nel vedere cosa accade dentro la funzione.
134145

135146
<span class="devtools" style="background-position:-72px -76px"></span> -- fai uno step, tasto `key:F11`.
136147
: Lo stesso di quello precedente, ma fa "un passo all'interno" della funzione. Cliccando qui è possibile avanzare uno step alla volta tutte le azioni dello script.
137148

138-
<span class="devtools" style="background-position:-104px -76px"></span> -- continua l'esecuzione fino alla fine della funzione corrente, tasto `key:Shift+F11`.
139-
: L'esecuzione si fermerà all'ultima linea della funzione corrente. Questa funzione è comoda quando entriamo per sbaglio in una funzione annidata usando <span class="devtools" style="background-position:-72px -76px"></span>, ma non siamo interessati, e vogliamo arrivare alla fine di questa il più velocemente possibile.
149+
<span class="devtools" style="background-position:-4px -194px"></span> -- "Step into", hotkey `key:F11`.
150+
: Molto simile a "Step", ma si comporta in maniera differente nel caso di chiamate a funzioni asicncrone. Se state ancora imparando JavaScript, allora potete ignorare la differenza, visto che non andremo ad utilizzare funzioni asincrone per ora.
151+
152+
Per il futuro, ricordatevi che "Step" ignora le funzioni asincrone, come ad esempio `setTimeout` (chiamata programmata di funzione). Invece "Step into" accede a questo tipo di funzioni, ed attende quanto necessario. Fate riferimento al [manuale DevTools](https://developers.google.com/web/updates/2018/01/devtools#async) per maggiori dettagli.
153+
154+
<span class="devtools" style="background-position:-32px -194px"></span> -- "Step out": continua l'esecuzione fino alla fine della funzione corrente, hotkey `key:Shift+F11`.
155+
: Continua l'esecuzione e la interrompe all'ultima linea della funzione corrente. Questo comando risulta essere utile nel caso in cui entrassimo accidentalmente in una chiamata annidata utilizzando <span class="devtools" style="background-position:-200px -190px"></span>, ma non siamo interessati alla sua esecuzione, e vogliamo arrivare al termine della sua esecuzione il prima possibile.
140156

141157
<span class="devtools" style="background-position:-7px -28px"></span> -- attiva/disattiva tutti i breakpoint.
142158
: Questo bottone non influenza l'esecuzione. E' semplicemente un on/off per i breakpoint.
143159

144160
<span class="devtools" style="background-position:-264px -4px"></span> -- attiva/disattiva la pausa automatica in caso di errori.
145-
: Quando attiva, e il pannello degli strumenti svilupattore è aperto, un errore nello script metterà automaticamente in pausa l'esecuzione. Cosi potremmo analizzare le variabili per capire cosa è andato storto. Quindi se il nostro script si blocca con un errore, possiamo aprire il debugger, attivare questa opzione e ricaricare la pagina per veder dove si blocca lo script e capirne il motivo.
161+
: Quando questa opzione è attiva, e il pannello degli strumenti sviluppatore è aperto, un errore nello script metterà automaticamente in pausa l'esecuzione. Cosi potremmo analizzare le variabili per capire cosa è andato storto. Quindi se il nostro script si blocca con un errore, possiamo aprire il debugger, attivare questa opzione e ricaricare la pagina per vedere dove si blocca lo script e capirne il motivo.
146162

147163
```smart header="Continua fino a qui"
148164
Premendo tasto destro su una riga di codice si aprirà un menu con una bellissima opzione denominata "Continua fino a qui".
@@ -152,7 +168,7 @@ Questa è molto utile quando vogliamo muoverci di più passi, ma siamo troppo pi
152168

153169
## Logging
154170

155-
Per stampare qualcosa sulla console, c'è una funzione `console.log`.
171+
Per stampare qualcosa sulla console, possiamo utilizzare la funzione `console.log`.
156172

157173
Ad esempio, questo stamperà i valori da `0` a `4` sulla console:
158174

@@ -163,13 +179,13 @@ for (let i = 0; i < 5; i++) {
163179
}
164180
```
165181

166-
Gli utenti normali non vedranno questo output poiché viene mostrato in console. Per vederlo dovrebbe aprire il menu Console degli strumenti sviluppatore, oppure premere `key:Esc` mentre si trova in un altro tab: questo tasto aprirà la console nella parte inferiore della schermata.
182+
Gli utenti normali non vedranno questo output poiché viene mostrato in console. Per vederlo dovrebbero aprire il menu `Console` degli strumenti sviluppatore, oppure premere `key:Esc` mentre si trovano in un altro tab: questo tasto aprirà la console nella parte inferiore della schermata.
167183

168-
Se abbiamo abbastanza log nel nostro codice, possiamo vedere cosa sta accadendo anche senza utilizzare il debugger.
184+
Utilizzando la funzione `console.log` nel nostro codice, possiamo vedere cosa sta accadendo anche senza utilizzare il debugger.
169185

170186
## Riepilogo
171187

172-
Come abbiamo visto, ci sono tre diversi modi di metter in pausa uno script:
188+
Come abbiamo visto, ci sono tre diversi modi di mettere in pausa uno script:
173189
1. Un breakpoint.
174190
2. L'istruzione `debugger`.
175191
3. Un errore (solo se gli strumenti sviluppatore sono aperti ed è attivo il bottone <span class="devtools" style="background-position:-264px -4px"></span>)
@@ -178,6 +194,6 @@ Cosi possiamo esaminare le variabili e capire cosa è andato male durante l'esec
178194

179195
Ci sono veramente troppe opzioni negli strumenti da sviluppatore per coprirle qui. Il manuale completo è disponibile all'indirizzo <https://developers.google.com/web/tools/chrome-devtools>.
180196

181-
Le informazioni fornite da questo capitolo sono sufficienti per iniziare a fare un di debug, anche se più avanti, specialmente quando farete cose più avanzate, seguite il link sopra e consultate il manuale per ulteriori informazioni.
197+
Le informazioni fornite da questo capitolo sono sufficienti per iniziare a fare un po' di debug, anche se più avanti, specialmente quando farete cose più avanzate, il link sopra potrà tornarvi utile.
182198

183-
Ah, inoltre potete anche cliccare i vari bottoni negli strumenti da sviluppatore e vedere cosa succede. E' probabilmente il metodo più rapido per imparare tutto. Non dimenticate che molte opzini sono disponibili anche con il click del tasto destro!
199+
Ah, inoltre potete anche cliccare i vari bottoni negli strumenti da sviluppatore e vedere cosa succede. E' probabilmente il metodo più rapido per imparare. Non dimenticate che molte opzioni sono disponibili anche con il click del tasto destro!

0 commit comments

Comments
 (0)