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
+67-67
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ Bevor wir komplexeren Code schreiben, lass uns über Debuggen sprechen.
4
4
5
5
Alle modernen Browser und die meisten anderen Umgebungen unterstützen "debuggen" -- eine spezielle UI in den Entwicklerwerkzeugen, welches es einfacher macht Fehler zu finden und zu beheben.
6
6
7
-
Wir werden hier Chrome verwenden, da es wahrscheinlich das Funktionsreichste in diesem Bereich ist.
7
+
Wir werden hier Chrome verwenden, da er wahrscheinlich das Funktionsreichste in diesem Bereich ist.
8
8
9
9
## Der "sources" Bereich
10
10
@@ -34,150 +34,150 @@ Jetzt können Sie auf die selbe Schaltfläche <span class="devtools" style="back
34
34
35
35
## Console
36
36
37
-
If we press`Esc`, then a console opens below. We can type commands there and press `key:Enter`to execute.
37
+
Wenn wir `Esc` drücken, dann öffnet sich darunter eine Console. Wir können dort Befehle eingeben und mit `key:Enter`ausführen.
38
38
39
-
After a statement is executed, its result is shown below.
39
+
Nachdem eine Anweisung ausgeführt wurde, wird das Ergebnis darunter angezeigt.
40
40
41
-
For example, here`1+2`results in`3`, and`hello("debugger")`returns nothing, so the result is`undefined`:
41
+
Als Beispiel, hier`1+2`ergibt `3`, und`hello("debugger")` liefert nichts, sodass das Ergebnis `undefined` ist:
42
42
43
43

44
44
45
45
## Breakpoints
46
46
47
-
Let's examine what's going on within the code of the [example page](debugging/index.html). In `hello.js`, click at line number `4`. Yes, right on the `4` digit, not on the code.
47
+
Lassen Sie uns untersuchen, was innerhalb des Codes der [Beispielseite](debugging/index.html) vor sich geht.. In `hello.js`, klicke auf die Zeilennummer `4`. Ja, direkt auf die Zahl `4`, nicht im Code.
48
48
49
-
Congratulations! You've set a breakpoint. Please also click on the number for line`8`.
49
+
Herzlichen Glückwunsch! Sie haben einen Breakpoint gesetzt. Bitte klicken sie auch auf die Nummer für Zeile`8`.
50
50
51
-
It should look like this (blue is where you should click):
51
+
Es sollte wie folgt aussehen (Blau markiert an welcher stelle sie klicken sollen):
52
52
53
53

54
54
55
-
A *breakpoint*is a point of code where the debugger will automatically pause the JavaScript execution.
55
+
Ein*breakpoint*ist ein Punkt im Code an der der Debugger automatisch anhalten wird, während der JavaScript ausführung.
56
56
57
-
While the code is paused, we can examine current variables, execute commands in the console etc. In other words, we can debug it.
57
+
Währen der Code angehalten ist können wir die aktuellen Variablen untersuchen, ausführen Befehle in der Console etc. In anderen Worten, wir können es debuggen.
58
58
59
-
We can always find a list of breakpoints in the right pane. That's useful when we have many breakpoints in various files. It allows to:
60
-
-Quickly jump to the breakpoint in the code (by clicking on it in the right pane).
61
-
-Temporarily disable the breakpoint by unchecking it.
62
-
-Remove the breakpoint by right-clicking and selecting Remove.
63
-
- ...And so on.
59
+
Wir können immer eine Liste von Breakpoints im rechten Bereich finden. Dies ist nützlich, wenn wir viele Breakpoints in verschiedenen Dateien haben. Das erlaubt uns:
60
+
-Schnell zu einem Breakpoint im Code zu springen (durch klicken auf ihn im rechten Bereich).
61
+
-Temporär einen Breakpoint auszuschalten indem wir in abwählen.
62
+
-Den Breakpoint zu entfernen durch rechts klicken und entfernen auswählen .
63
+
- ...Und so weiter.
64
64
65
65
```smart header="Conditional breakpoints"
66
-
*Right click* on the line number allows to create a *conditional* breakpoint. It only triggers when the given expression is truthy.
66
+
*Rechts-Klick* auf die Zeilennummer erlaubt es uns ein *bedingten* Breakpoint. Er wird nur ausgelöst wenn der gegebene Ausdruck wahr ist.
67
67
68
-
That's handy when we need to stop only for a certain variable value or for certain function parameters.
68
+
Das ist praktisch, wenn wir nur für einen bestimmten Variablenwert oder für bestimmte Funktionsparameter anhalten müssen.
69
69
```
70
70
71
-
## Debugger command
71
+
## Debugger Befehl
72
72
73
-
We can also pause the code by using the `debugger`command, like this:
73
+
Wir können auch den Code anhalten durch das nutzen des `debugger`Befehles, so wie hier:
74
74
75
75
```js
76
76
functionhello(name) {
77
77
let phrase =`Hello, ${name}!`;
78
78
79
79
*!*
80
-
debugger; // <-- the debugger stops here
80
+
debugger; // <-- der Debugger hält hier an
81
81
*/!*
82
82
83
83
say(phrase);
84
84
}
85
85
```
86
86
87
-
That's very convenient when we are in a code editor and don't want to switch to the browser and look up the script in developer tools to set the breakpoint.
87
+
Das ist sehr praktisch, wenn wir uns in einem Code-Editor befinden und nicht zum Browser wechseln und das Script in den Entwicklertools nachschlagen wollen, um den Haltepunkt zu setzen.
88
88
89
89
90
-
## Pause and look around
90
+
## Pause und umhersehen
91
91
92
-
In our example, `hello()`is called during the page load, so the easiest way to activate the debugger is to reload the page. So let's press `key:F5` (Windows, Linux) or`key:Cmd+R` (Mac).
92
+
In unserem Beispiel, `hello()` wir währen des Seitenladens aufgerufen, so das der einfachste Weg ist um den Debugger zu aktivieren, das Neuladen der Seite ist. Also lass uns `key:F5`drücken (Windows, Linux) oder`key:Cmd+R` (Mac).
93
93
94
-
As the breakpoint is set, the execution pauses at the 4th line:
94
+
Ist der Breakpoint gesetzt, hält die Ausführung in der 4 Zeile an:
95
95
96
96

97
97
98
-
Please open the informational dropdowns to the right (labeled with arrows). They allow you to examine the current code state:
98
+
Bitte öffne die Dropdown-Listen für Informationen auf der rechten Seite (markiert mit Pfeilen). Diese erlaubt Ihnen den aktuellen Code-Zustand zu untersuchen:
99
99
100
-
1.**`Watch` -- shows current values for any expressions.**
100
+
1.**`Watch` -- zeigt aktuelle Werte für beliebige Ausdrücke an.**
101
101
102
-
You can click the plus`+` and input an expression. The debugger will show its value at any moment, automatically recalculating it in the process of execution.
102
+
Sie können das Plus anklicken`+`und einen Ausdruck eingeben. Der Debugger wird den Wert zu jedem Moment anzeigen, er wird automatisch neu berechnet während die Ausführung läuft.
103
103
104
-
2.**`Call Stack` -- shows the nested calls chain.**
104
+
2.**`Call Stack` -- zeigt die verschachtelte Aufrufkette an.**
105
105
106
-
At the current moment the debugger is inside `hello()`call, called by a script in `index.html` (no function there, so it's called "anonymous").
106
+
Im aktuellen Moment ist der Debugger im `hello()`aufruf, aufgerufen durch ein Script in `index.html` (hier ist keine Funktion, daher wird es "anonym" aufgerufen).
107
107
108
-
If you click on a stack item, the debugger jumps to the corresponding code, and all its variables can be examined as well.
109
-
3.**`Scope` -- current variables.**
108
+
Wenn Sie auf ein Stack Item klicken, springt der Debugger zum zugehörigen Code, und alle seine Variablen können ebenfalls untersucht werden.
109
+
3.**`Scope` -- aktuelle Variablen.**
110
110
111
-
`Local`shows local function variables. You can also see their values highlighted right over the source.
111
+
`Local`zeigt lokale funktions Variablen. Sie können ihre Werte auch direkt über dem Code hervorgehoben sehen .
112
112
113
-
`Global`has global variables (out of any functions).
113
+
`Global`hat globale Variablen (außerhalb von allen Funktionen).
114
114
115
-
There's also `this`keyword there that we didn't study yet, but we'll do that soon.
115
+
Dort ist auch das `this`Schlüsselwort, welches wir bisher nicht kennengelernt haben, aber das werden wir bald tun.
116
116
117
-
## Tracing the execution
117
+
## Verfolgung der Ausführung
118
118
119
-
Now it's time to *trace* the script.
119
+
Nun ist es an der Zeit, das Skript zu verfolgen (*trace*).
120
120
121
-
There are buttons for it at the top of the right pane. Let's engage them.
121
+
Hierfür gibt es Schaltflächen im oberen rechten Bereich. Nehmen wir diese ins Visier.
122
122
123
-
<spanclass="devtools"style="background-position:-7px-76px"></span> -- continue the execution, hotkey`key:F8`.
124
-
: Resumes the execution. If there are no additional breakpoints, then the execution just continues and the debugger loses control.
123
+
<spanclass="devtools"style="background-position:-7px-76px"></span> -- die Ausführung weiter fortsetzen, Kurztaste`key:F8`.
124
+
: Setzt die Ausführung fort. Gibt es keine weiteren Breakpoints, wird die Ausführung einfach fortgesetzt und der Debugger verliert die Kontrolle.
125
125
126
-
Here's what we can see after a click on it:
126
+
Hier ist, was wir nach einem Klick darauf sehen können:
127
127
128
-

128
+

129
129
130
-
The execution has resumed, reached another breakpoint inside `say()` and paused there. Take a look at the "Call stack" at the right. It has increased by one more call. We're inside `say()` now.
130
+
Die Ausführung wurde fortgesetzt, erreicht einen anderen Breakpoint innerhalb von `say()` und hält dort an. Werfen Sie einen Blick auf den "Call stack" auf der rechten Seite. Es hat sich um einen weiteren Anruf erhöht. Wir sind nun innerhalb von `say()`.
131
131
132
-
<spanclass="devtools"style="background-position:-137px-76px"></span> -- make a step (run the next command), but *don't go into the function*, hotkey`key:F10`.
133
-
: If we click it now, `alert`will be shown. The important thing is that `alert`can be any function, the execution "steps over it", skipping the function internals.
132
+
<spanclass="devtools"style="background-position:-137px-76px"></span> -- einen Schritt tun (den nächsten Befehl ausführen), aber *nicht in die Funktion hinein gehen*, Kurztaste`key:F10`.
133
+
: Wenn wir es jetzt anklicken, ein `alert`wird angezeigt. Das Wichtige dabei ist `alert`kann jede Funktion sein, die Ausführung "geht darüber hinweg", es überspringt den Funktionsinhalt.
134
134
135
-
<spanclass="devtools"style="background-position:-72px-76px"></span> -- make a step, hotkey`key:F11`.
136
-
: The same as the previous one, but "steps into" nested functions. Clicking this will step through all script actions one by one.
135
+
<spanclass="devtools"style="background-position:-72px-76px"></span> -- einen Schritt tun, Kurztaste`key:F11`.
136
+
: Wie der Vorherige, allerdings "hineingehen" in geschachtelte Funktionen . Wenn Sie darauf klicken, werden alle Skript-Aktionen nacheinander ausgeführt.
137
137
138
-
<spanclass="devtools"style="background-position:-104px-76px"></span> -- continue the execution till the end of the current function, hotkey`key:Shift+F11`.
139
-
: The execution would stop at the very last line of the current function. That's handy when we accidentally entered a nested call using <spanclass="devtools"style="background-position:-72px-76px"></span>, but it does not interest us, and we want to continue to its end as soon as possible.
138
+
<spanclass="devtools"style="background-position:-104px-76px"></span> -- fortsetzen der Ausführung bis zum Ende der aktuellen Funktion, Kurztaste`key:Shift+F11`.
139
+
: Die Ausführung stoppt an der aller letzten Zeile der aktuellen Funktion. Dies ist nett wenn man ausversehen eine verschachtelte Funktion aufgerufen hat <spanclass="devtools"style="background-position:-72px-76px"></span>, diese interessiert uns aber nicht, und wir wollen diese so schnell wie möglich wieder verlassen.
140
140
141
-
<spanclass="devtools"style="background-position:-7px-28px"></span> -- enable/disable all breakpoints.
142
-
: That button does not move the execution. Just a mass on/off for breakpoints.
141
+
<spanclass="devtools"style="background-position:-7px-28px"></span> -- aktivieren/deaktivieren aller Breakpoints.
142
+
: Diese Schaltfläche bewegt die Ausführung nicht. Sie aktiviert/deaktiviert nur alle Breakpoints.
143
143
144
-
<spanclass="devtools"style="background-position:-264px-4px"></span> -- enable/disable automatic pause in case of an error.
145
-
: When enabled, and the developer tools is open, a script error automatically pauses the execution. Then we can analyze variables to see what went wrong. So if our script dies with an error, we can open debugger, enable this option and reload the page to see where it dies and what's the context at that moment.
144
+
<spanclass="devtools"style="background-position:-264px-4px"></span> -- aktivieren/deaktivieren der automatischen Pause im Falle eines Fehlers.
145
+
: Ist dies aktiviert,und die Entwicklerwerkzeuge sind offen, ein Script Fehler führt zu einem automatischen Anhalten der Ausführung. Dann können wir die Variablen analysieren um zu sehen was falsch lief. Das heißt wenn unser Script mit einem Fehler stirbt, können wir den Debugger öffnen, diese Option aktivieren und die Seite neuladen um zu sehen an welcher Stelle es stirbt und was der Kontext an dieser Stelle ist..
146
146
147
147
```smart header="Continue to here"
148
-
Right click on a line of code opens the context menu with a great option called "Continue to here".
148
+
Rechtsklick auf die Zeile öffnet das Kontext Menu mit einer großartigen Option mit dem Namen: "Continue to here".
149
149
150
-
That's handy when we want to move multiple steps forward, but we're too lazy to set a breakpoint.
150
+
Dies ist Nützlich wenn wir mehrere Schritte vorwärts wollen, aber wir zu faul sind um Breakpoints zu setzten.
151
151
```
152
152
153
153
## Logging
154
154
155
-
To output something to console, there's `console.log`function.
155
+
Um irgendetwas in der Console anzuzeigen , gibt es die `console.log`Funktion.
156
156
157
-
For instance, this outputs values from`0`to`4`to console:
157
+
Zum Beispiel gibt dies Werte von`0`bis`4`in der Console aus:
158
158
159
159
```js run
160
-
//open console to see
160
+
//öffne die Console um es zu sehen
161
161
for (let i =0; i <5; i++) {
162
162
console.log("value", i);
163
163
}
164
164
```
165
165
166
-
Regular users don't see that output, it is in the console. To see it, either open the Console tab of developer tools or press`key:Esc`while in another tab: that opens the console at the bottom.
166
+
Normalerweise sieht der Nutzer diese Ausgabe nicht, er ist in der Console. Um ihn zu sehen, öffne entweder den Console Bereich in den Entwicklerwerkzeugen oder drücke`key:Esc`während Sie sich in einer anderen Registerkarte befinden: dies öffnet die Console an der Unterseite.
167
167
168
-
If we have enough logging in our code, then we can see what's going on from the records, without the debugger.
168
+
Wenn wir genügend Logging in unserem Code haben, dann können wir sehen, was in den Datensätzen vor sich geht, ohne den Debugger..
169
169
170
-
## Summary
170
+
## Übersicht
171
171
172
-
As we can see, there are three main ways to pause a script:
173
-
1.A breakpoint.
174
-
2.The`debugger`statements.
175
-
3.An error (if dev tools are open and the button <spanclass="devtools"style="background-position:-264px-4px"></span> is "on")
172
+
Wie wir sehen können, gibt es drei Hauptmöglichkeiten ein Script zu unterbrechen:
173
+
1.Ein breakpoint.
174
+
2.Das`debugger`Statement.
175
+
3.Ein Fehler (wenn die Entwicklerwerkzeuge geöffnet sind und die Schaltfläche <spanclass="devtools"style="background-position:-264px-4px"></span> auf "on" ist)
176
176
177
-
Then we can examine variables and step on to see where the execution goes wrong.
177
+
Dann können wir Variablen untersuchen und weitermachen, um zu sehen , wo die Ausführung falsch läuft.
178
178
179
-
There are many more options in developer tools than covered here. The full manual is at<https://developers.google.com/web/tools/chrome-devtools>.
179
+
Es gibt noch viel mehr Möglichkeiten in den Entwicklerwerkzeugen als hier beschrieben sind. Das vollständige Handbuch finden Sie unter<https://developers.google.com/web/tools/chrome-devtools>.
180
180
181
-
The information from this chapter is enough to begin debugging, but later, especially if you do a lot of browser stuff, please go there and look through more advanced capabilities of developer tools.
181
+
Die Informationen aus diesem Kapitel reichen aus, um mit dem Debuggen zu beginnen, aber später, besonders wenn Sie viel Browserarbeit leisten, gehen Sie bitte dorthin und schauen Sie sich die erweiterten Funktionen der Entwicklerwerkzeuge an.
182
182
183
-
Oh, and also you can click at various places of dev tools and just see what's showing up. That's probably the fastest route to learn dev tools. Don't forget about the right click as well!
183
+
Oh, und auch Sie können an verschiedenen Stellen der Entwicklungswerkzeuge klicken und einfach sehen, was angezeigt wird. Das ist wahrscheinlich der schnellste Weg, um Entwicklungswerkzeuge zu erlernen. Vergiss auch den Rechtsklick nicht!
0 commit comments