Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix debugging chrome#689

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
Andrii256 wants to merge2 commits intojavascript-tutorial:master
base:master
Choose a base branch
Loading
fromAndrii256:3-01-debugging-chrome
Open
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 24 additions & 23 deletions1-js/03-code-quality/01-debugging-chrome/article.md
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,7 +2,7 @@

Перед тим, як приступити до написання складнішого коду, поговорімо про його налагодження.

[Налагодження](https://uk.wikipedia.org/wiki/Налагодження_програм) — це процес пошуку і виправлення помилок в скрипті. Усі сучасні браузери та більшість інших середовищ розробки підтримують інструменти налагодження спеціальний графічний інтерфейс, який значно спрощує налагодження. Він також дозволяє покроково відстежувати, що саме відбувається в коді.
[Налагодження](https://uk.wikipedia.org/wiki/Налагодження_програм) — це процес пошуку і виправлення помилок в скрипті. Усі сучасні браузери та більшість інших середовищ розробки підтримують інструменти налагодження, тобто спеціальний графічний інтерфейс, який значно спрощує налагодження. Він також дозволяє покроково відстежувати, що саме відбувається в коді.

Ми будемо використовувати браузер Chrome, тому що в нього достатньо можливостей для налагодження. В більшості інших браузерів процес буде схожим.

Expand DownExpand Up@@ -44,17 +44,17 @@

## Точки зупинки (breakpoints)

Розберімось як працює код на [тестовій сторінці](debugging/index.html). У файлі `hello.js`, натисніть на рядок номер `4`. Так, на саму цифру, непо коді.
Розберімось як працює код на [тестовій сторінці](debugging/index.html). У файлі `hello.js`, натисніть на рядок номер `4`. Так, на саму цифру, нена код.

Вітаємо! Ви поставили точку зупинки. Поставте також точку зупинки на `8` рядку.

Номери рядків мають стати синього кольору. Ось що в результаті повинно вийти:

![](chrome-sources-breakpoint.svg)

*Точка зупинки* — це місце в коді, де налагоджувач автоматично (тимчасово) зупинить виконання JavaScript.
*Точка зупинки* — це місце в коді, де налагоджувач автоматичнопоставить на паузу(тимчасово призупинить) виконання JavaScript.

Поки виконання(тимчасово) зупинене, ми можемо переглядати поточні значення змінних, виконувати команди в консолі тощо. Інакше кажучи, можемо налагоджувати (розробники інколи кажуть «дебажити», від слова «debug»).
Поки виконаннястоїть на паузі, ми можемо переглядати поточні значення змінних, виконувати команди в консолі тощо. Інакше кажучи, можемо налагоджувати (розробники інколи кажуть «дебажити», від слова «debug»).

В правій частині панелі видно всі точки зупинки. Коли виставлено багато таких точок, та ще й в різних файлах, цей список дозволяє ефективно ними керувати:
- Швидко переміщатися до будь-якої точки зупинки в коді – потрібно клацнути по ній в правій частині панелі.
Expand All@@ -63,14 +63,14 @@
- ...тощо.

```smart header="Умовні точки зупинки"
Можна задати так звану *умовну* точку зупинки -- клацніть правою кнопкою миші по номеру рядкав коді, виберіть пункт "Edit breakpoint..." і пропишіть умову. Коли ця умова виконається, то виконання коду(тимчасово) зупиниться в цій точці зупинки.
Можна задати так звану *умовну* точку зупинки -- клацніть правою кнопкою миші по номеру рядказліва від коду, виберіть пункт "Edit breakpoint..." і пропишіть умову. Коли ця умова виконається, то виконання кодустане на паузу в цій точці зупинки.

Цей метод використовується, коли потрібно(тимчасово) зупинити виконання коду під час специфічних значень змінних або параметрів функції.
Цей метод використовується, коли потрібнопоставити на паузу виконання коду під час специфічних значень змінних або параметрів функції.
```

## Команда "debugger"

Виконання коду також можна(тимчасово) зупиняти командою `debugger` прямо всередині коду, ось так:
Виконання коду також можнаставити на паузу командою `debugger` прямо всередині коду, ось так:

```js
function hello(name) {
Expand DownExpand Up@@ -103,7 +103,7 @@ function hello(name) {

2. **`Call Stack` показує послідовність викликів функцій.**

В нашому прикладі налагоджувач(тимчасово) зупинив виконання коду всередині функції `hello()`, яка була викликана з файлу `index.html` (там немає функції, тому виклик "anonymous" – анонімний).
В нашому прикладі налагоджувачпоставив на паузу виконання коду всередині функції `hello()`, яка була викликана з файлу `index.html` (там немає функції, тому виклик "anonymous" – анонімний).

Натиснувши на елемент списку (наприклад, на "anonymous"), налагоджувач перейде до відповідного коду, де було здійснено виклик.
3. **`Scope` показує поточні змінні.**
Expand All@@ -120,41 +120,42 @@ function hello(name) {

Для цього є декілька кнопок, які знаходяться на панелі зверху праворуч. Давайте їх розглянемо.
<!-- https://github.com/ChromeDevTools/devtools-frontend/blob/master/front_end/Images/src/largeIcons.svg -->
<span class="devtools" style="background-position:-146px -168px"></span>&ensp;—&ensp;"Resume": продовжити виконання.Швидка клавіша: `key:F8`.
<span class="devtools" style="background-position:-146px -168px"></span>&ensp;—&ensp;"Resume": продовжити виконання.Гаряча клавіша: `key:F8`.
: Відновлює виконання коду. Якщо більше немає точок зупинок, налагоджувач завершить свою роботу, а код буде виконуватися далі.

Ось що ми побачимо, коли натиснемо на цю кнопку:

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

Виконання коду відновилося, дійшло до іншої точки зупинки, всередині `say()` і налагоджувач знову(тимчасово) зупиниввиконання. Зверніть увагу на вкладку "Call Stack" праворуч: в списку з’явився ще один виклик. Ми тепер всередині функції `say()`.
Виконання коду відновилося, дійшло до іншої точки зупинки, всередині `say()` і налагоджувач зновупоставиввиконання на паузу. Зверніть увагу на вкладку "Call Stack" праворуч: в списку з’явився ще один виклик. Ми тепер всередині функції `say()`.

<span class="devtools" style="background-position:-200px -190px"></span>&ensp;—&ensp;"Step": виконати наступну команду.Швидка клавіша: `key:F9`.
<span class="devtools" style="background-position:-200px -190px"></span>&ensp;—&ensp;"Step": виконати наступну команду.Гаряча клавіша: `key:F9`.
: Якщо ми натиснемо на неї – виконається функція `alert`.

Натискаючи цю кнопку раз за разом, всі вирази будуть виконуватися покроково.

<span class="devtools" style="background-position:-62px -192px"></span> -- "Step over": виконати наступну команду, *не заходячи в функцію*.Швидка клавіша: `key:F10`.
: Подібна до попередньої команди "Step",проте працює дещо по-іншому, якщо наступний вираз–- виклик функції (невбудована, як `alert`, анаша власна функція).
<span class="devtools" style="background-position:-62px -192px"></span> -- "Step over": виконати наступну команду, *не заходячи в функцію*.Гаряча клавіша: `key:F10`.
: Подібна до попередньої команди "Step",але поводиться трохи поіншому якщо наступний виразє викликом функції (невбудованої, якот`alert`, анашої власної функції).

Команда "Step" зайде в функцію і зупиниться на її першому рядку, тоді як "Step over" виконає всі вирази, які є в цій функції (включно з викликами вкладених функцій, такі як `alert()`).

Виконання(тимчасово) зупинитьсянанаступному рядку, коли завершиться функція.
Виконаннястаненапаузу одразу ж після закінчення тієї функції.

Це зручно, коли ми не хочемо досліджувати, що відбувається всередині функції.
Це зручно, коли ми не хочемо досліджувати, що відбувається всерединітієїфункції.

<span class="devtools" style="background-position:-4px -194px"></span>&ensp;—&ensp;"Step into": зробити крок.Швидка клавіша: `key:F11`.
: Подібна до "Step", але працює інакшеу випадку викликівасинхронних функцій. Якщо ви тільки почали вчити JavaScript, тоді можете проігнорувати цю різницю, тому що ми покищо не вчили асинхронних викликів.
<span class="devtools" style="background-position:-4px -194px"></span>&ensp;—&ensp;"Step into": зробити крок.Гаряча клавіша: `key:F11`.
: Подібна до "Step", але працює інакшепри викликахасинхронних функцій. Якщо ви тільки почали вчити JavaScript, тоді можете проігнорувати цю різницю, тому що ми поки-що не вчили асинхронних викликів.

На майбутнє просто майте на увазі, що команда "Step" ігнорує асинхронні дії, такі як `setTimeout` (відкладений виклик функції), які виконуються пізніше. Команда "Step into" заходить в їхній код, і очікує на них якщо потрібно. Можете поглянути в [документацію DevTools](https://developers.google.com/web/updates/2018/01/devtools#async), щоб побачити як це відбувається.

<span class="devtools" style="background-position:-32px -194px"></span>&ensp;—&ensp;"Step out": продовжити виконання до завершення поточної функції.Швидка клавіша: `key:Shift+F11`.
:Виконаннякодувідновиться і (тимчасово) зупинитися на останньому рядку поточної функції. Це зручно, коли ми випадковонатиснули кнопку<span class="devtools" style="background-position:-200px -190px"></span>,зайшовши у вкладений виклик, і хочемо якнайшвидше завершити його.
<span class="devtools" style="background-position:-32px -194px"></span>&ensp;—&ensp;"Step out": продовжити виконання до завершення поточної функції.Гаряча клавіша: `key:Shift+F11`.
:Продовжити виконаннякодуі поставити паузу на останньому рядку поточної функції. Це зручно, коли ми випадковозайшли у вкладений виклик натиснувши<span class="devtools" style="background-position:-200px -190px"></span>,але він нас не цікавить і хочемо якнайшвидше завершити його.

<span class="devtools" style="background-position:-61px -74px"></span>&ensp;—&ensp;активувати/деактивувати всі точки зупинки.
: Ця кнопка невпливає на виконання коду, вона лише дозволяє масово увімкнути/вимкнути точки зупинки.
: Ця кнопка непросуває нас по виконанню коду, вона лише дозволяє масово увімкнути/вимкнути точки зупинки.

: Коли ця кнопка активна і відкрито інструменти розробника, тоді скрипт автоматично (тимчасово) зупинить виконання, якщо трапиться якась помилка. Ми зможемо проаналізувати змінні й дослідити, що пішло не так. Отже, якщо наш скрипт аварійно завершує роботу, ми можемо відкрити інструменти розробника, активувати цю опцію і перезавантажити сторінку, щоб побачити де і за яких умов скрипт "вмирає", і які в цього деталі.
<span class="devtools" style="background-position:-90px -146px"></span>&ensp;—&ensp;активувати/деактивувати автоматичну паузу у випадку помилки.
: Коли ця кнопка активна і відкрито інструменти розробника, тоді браузер автоматично поставить виконання на паузу якщо трапиться якась помилка. Ми зможемо проаналізувати змінні й дослідити, що пішло не так. Отже, якщо наш скрипт аварійно завершує роботу, ми можемо відкрити інструменти розробника, активувати цю опцію і перезавантажити сторінку, щоб побачити де і за яких умов скрипт "вмирає", і які в цього деталі.


## Логування
Expand All@@ -170,7 +171,7 @@ for (let i = 0; i < 5; i++) {
}
```

Звичайні користувачі не бачитимуть цієї інформації вона в консолі. Щоб побачити її, відкрийте інструменти розробника і перейдіть на вкладку «Console», або натисніть клавішу `key:Esc`, якщо ви наіншій вкладці: це відкриє консоль знизу.
Звичайні користувачі не бачитимуть цієї інформації, бо вона в консолі. Щоб побачити її,абовідкрийте інструменти розробника і перейдіть на вкладку «Console», абожнатисніть клавішу `key:Esc`, якщо вихочете залишатисьнанаявній вкладці: це відкриє консоль знизу.

Якщо в нас достатньо логів в нашому коді, ми зможемо побачити що відбувається з нашими записами, без допомоги налагоджувача.

Expand All@@ -181,7 +182,7 @@ for (let i = 0; i < 5; i++) {
2. Інструкція `debugger`.
3. Помилка (якщо активовано кнопку <span class="devtools" style="background-position:-90px -146px"></span> в інструментах розробника).

Коли виконання (тимчасово) зупинене, ми можемо налагоджувати (інколи кажуть "дебажити")- досліджувати змінні й відстежувати виконання коду, щоб побачити, що пішло не так.
Коли виконання (тимчасово) зупинене, ми можемо налагоджувати (інколи кажуть "дебажити")-- досліджувати змінні й відстежувати виконання коду, щоб побачити, що пішло не так.

В інструментах розробника набагато більше опцій, ніж ми розглянули тут. Всю інформацію про інструменти розробника браузера Chrome можна прочитати в [їхній офіційній документації](https://developers.google.com/web/tools/chrome-devtools) (англійською).

Expand Down
View file
Open in desktop
Loading
Sorry, something went wrong.Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

[8]ページ先頭

©2009-2025 Movatter.jp