|
1 |
| -# Debugging in Chrome |
| 1 | +# Debuggen in Chrome |
2 | 2 |
|
3 |
| -Before writing more complex code, let's talk about debugging. |
| 3 | +Bevor wir komplexeren Code schreiben, lass uns über Debuggen sprechen. |
4 | 4 |
|
5 |
| -All modern browsers and most other environments support "debugging" -- a special UI in developer tools that makes finding and fixing errors much easier. |
| 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 |
| -We'll be using Chrome here, because it's probably the most feature-rich in this aspect. |
| 7 | +Wir werden hier Chrome verwenden, da er wahrscheinlich den Funktionsreichsten in diesem Bereich hat. |
8 | 8 |
|
9 |
| -## The "sources" pane |
| 9 | +## Der "sources" Bereich |
10 | 10 |
|
11 |
| -Your Chrome version may look a little bit different, but it still should be obvious what's there. |
| 11 | +Deine Chrome Version sieht vielleicht etwas anders aus, aber es sollte trotzdem offensichtlich sein, was es gibt. |
12 | 12 |
|
13 |
| -- Open the [example page](debugging/index.html) in Chrome. |
14 |
| -- Turn on developer tools with `key:F12` (Mac: `key:Cmd+Opt+I`). |
15 |
| -- Select the `sources` pane. |
| 13 | +- Öffne die [Beispielseite](debugging/index.html) in Chrome. |
| 14 | +- Öffne die Entwicklerwerkzeugen mit `key:F12` (Mac: `key:Cmd+Opt+I`). |
| 15 | +- Öffne den `sources` Bereich. |
16 | 16 |
|
17 |
| -Here's what you should see if you are doing it for the first time: |
| 17 | +Folgendes sollten Sie sehen, wenn Sie dies zum ersten Mal machst: |
18 | 18 |
|
19 | 19 | 
|
20 | 20 |
|
21 |
| -The toggler button <span class="devtools" style="background-position:-168px -76px"></span> opens the tab with files. |
| 21 | +Die Schaltfäche <span class="devtools" style="background-position:-168px -76px"></span> öffnet die Registerkarte mit den Dateien. |
22 | 22 |
|
23 |
| -Let's click it and select `index.html` and then `hello.js` in the tree view. Here's what should show up: |
| 23 | +Wir klicken darauf und wählen `index.html` aus und danach `hello.js` in der Baumansicht. Danach sollte es etwa so bei Ihnen aussehen: |
24 | 24 |
|
25 | 25 | 
|
26 | 26 |
|
27 |
| -Here we can see three zones: |
| 27 | +Hier können wir 3 Bereiche erkennen: |
28 | 28 |
|
29 |
| -1. The **Resources zone** lists HTML, JavaScript, CSS and other files, including images that are attached to the page. Chrome extensions may appear here too. |
30 |
| -2. The **Source zone** shows the source code. |
31 |
| -3. The **Information and control zone** is for debugging, we'll explore it soon. |
| 29 | +1. Der **Ressourcen Bereich** listet HTML, JavaScript, CSS und andere Dateien auf, einschließlich Bilder die in der Seite eingebunden. |
| 30 | +2. Der **Source Bereich** zeigt den Source Code. |
| 31 | +3. Der **Information und Kontroll Bereich** ist für das Debuggen, wir werden ihn bald erkunden. |
32 | 32 |
|
33 |
| -Now you could click the same toggler <span class="devtools" style="background-position:-200px -76px"></span> again to hide the resources list and give the code some space. |
| 33 | +Jetzt können Sie auf die selbe Schaltfläche <span class="devtools" style="background-position:-200px -76px"></span> erneut klicken um die Ressourcen Liste zu verstecken um dem Code platz zu schaffen. |
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, daher ist das Ergebnis `undefined`: |
42 | 42 |
|
43 | 43 | 
|
44 | 44 |
|
45 |
| -## Breakpoints |
| 45 | +## Haltepunkte |
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 Haltepunkt 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 *Haltepunkt* 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, Befehle in der Console ausführen 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 Haltepunkten im rechten Bereich finden. Dies ist nützlich, wenn wir viele Haltepunkte in verschiedenen Dateien haben. Das erlaubt uns: |
| 60 | +- Schnell zu einem Haltepunkt im Code zu springen (durch klicken auf ihn im rechten Bereich). |
| 61 | +- Temporär einen Haltepunkt auszuschalten indem wir in abwählen. |
| 62 | +- Den Haltepunkt 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* Haltepunkt. 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 | function hello(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 Haltepunkt 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 Funktionsvariablen. 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. |
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 |
| -<span class="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 | +<span class="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 Haltepunkte, 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 Haltepunkt 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 |
| -<span class="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 | +<span class="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, wird ein `alert` angezeigt. Das Wichtige dabei ist `alert` kann jede Funktion sein, die Ausführung "geht darüber hinweg", es überspringt den Funktionsinhalt. |
134 | 134 |
|
135 |
| -<span class="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 | +<span class="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 |
| -<span class="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 <span class="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 | +<span class="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 <span class="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 |
| -<span class="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 | +<span class="devtools" style="background-position:-7px -28px"></span> -- aktivieren/deaktivieren aller Haltepunkte. |
| 142 | +: Diese Schaltfläche bewegt die Ausführung nicht. Sie aktiviert/deaktiviert nur alle Haltepunkte. |
143 | 143 |
|
144 |
| -<span class="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 | +<span class="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 Haltepunkte 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, sie erscheint in der Console. Um sie 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 <span class="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 Haltepunkt. |
| 174 | +2. Das `debugger` Statement. |
| 175 | +3. Ein Fehler (wenn die Entwicklerwerkzeuge geöffnet sind und die Schaltfläche <span class="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