SlideShare a Scribd company logo
1 of 38
Олег Воскович
JS Дебаггер:
 точки останова
 отслеживание переменных
 трассировка
2
3
JS Дебаггер:
 точки останова
 отслеживание переменных
 трассировка
4
https://developer.chrome.com/devtools/docs/javascript-
debugging
Тулз
http://spy-js.com
5
Тулз
http://getfirebug.com/javascript
https://developer.mozilla.org/en-US/docs/Tools/Debugger
6
Основные возможности
дебаггеров на примере Google
Chrome
7
Точки останова
 установка точки останова
 останов по условию
 управление точками останова
 стек вызовов
8
Установка точки останова 1/4
9
Установка точки останова 1/4
10
Ctrl + O (Cmd + O)
Установка точки останова 1/4
11
Ctrl + Shift + O (Cmd + ⇧ +
O)
Установка точки останова 1/4
12
Останов по условию 2/4
13
Останов по условию 2/4
14
Управление точками останова
3/4
15
Управление точками останова 3/4
16
Стек вызовов 4/4
17
Стек вызовов 4/4
18
Отслеживание переменных и
выражений
 список переменных
 выражения
19
Локальный скоуп
 local
 closure
 global
Выводит все доступные
переменные из текущей
точки останова.
Изменение значений
параметров входе
выполнения.
20
Просмотр выражений.
Удобно использовать если
вам необходимо следить
только за некоторыми
переменными.
Изменять значения
параметров входе
выполнения так же
возможно.
Дает возможность следить
за результатом выражения в
ходе выполнения.
21
Трассировка
 управление трассировкой
 точки останова XHR
 точки останова DOM манипуляций
 точки останова при вызове событий
 точки останова при вызове исключений
 точки останова получения сообщений воркеров
22
Панель трассировки
 панель управления
 Call stack
 Breakpoints
 XHR Breakpoints
 DOM BR
 Exception BR
 Event Listener BPs
 Worker
Прослушивание событий
манипуляция с DOM
23
Управление трассировкой
1/6
24
Управление трассировкой
1/6
25
Пример XHR BP 2/6
26
Точки останова DOM манипуляций
3/6
27
Точки останова DOM манипуляций
3/6
28
Точки останова событий 4/6
29
Пример отлова
исключения
до исключения 5/6
30
31
Пример отлова исключения
до исключения 5/6
Отслеживание Worker 6/6
32
JS дебаггер в
PHPStorm/WebStorm
33
JS дебаггер SPY-JS (spy-js.com)
34
35
Полезные ссылки
 https://developer.mozilla.org/en-
US/docs/Tools/Debugger
 https://developer.chrome.com/devtools/d
ocs/javascript-debugging
 http://getfirebug.com/javascript
 https://developer.chrome.com/devtools/d
ocs/shortcuts
 http://spy-js.com/
36
JS Дебаггер Q&A
 точки останова
 отслеживание переменных
 трассировка
37
38

More Related Content

What's hot

Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Badoo Development
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ruNikolay Samokhvalov
 
Sampling profiling
Sampling profilingSampling profiling
Sampling profilingSlach
 
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Egor Konovalov
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов» Badoo Development
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикIT61
 
Запуск тестов с tox и Docker
Запуск тестов с tox и DockerЗапуск тестов с tox и Docker
Запуск тестов с tox и DockerAlexander Koshelev
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussiaNikolay Samokhvalov
 
Белым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияБелым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияSQALab
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesIosif Itkin
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderSQALab
 
dont badmouth mojo
dont badmouth mojodont badmouth mojo
dont badmouth mojoAnton Ukolov
 
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Yandex
 
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmarkAnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmarkNaim Shafiev
 
Flask как хорошее решение для веб проекта
Flask как хорошее решение для веб проектаFlask как хорошее решение для веб проекта
Flask как хорошее решение для веб проектаPython Meetup
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениSQALab
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 

What's hot (20)

Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
Внедрение Docker в процесс разработки демонов. Доклад Константина Карпова на ...
 
2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru2014.10.15 Сергей Бурладян, Avito.ru
2014.10.15 Сергей Бурладян, Avito.ru
 
openSUSE Build Server от Б до Ю
openSUSE Build Server от Б до ЮopenSUSE Build Server от Б до Ю
openSUSE Build Server от Б до Ю
 
Sampling profiling
Sampling profilingSampling profiling
Sampling profiling
 
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»  Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
Паша Мурзаков: Как 200 строк на Go помогли нам освободить 15 серверов»
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчик
 
Запуск тестов с tox и Docker
Запуск тестов с tox и DockerЗапуск тестов с tox и Docker
Запуск тестов с tox и Docker
 
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
 
Белым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестированияБелым по черному или альтернативное использование unit-тестирования
Белым по черному или альтернативное использование unit-тестирования
 
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesTMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual Machines
 
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The GrinderИлья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
Илья Евлампиев - Нагрузочное тестирование веб-приложений с помощью The Grinder
 
dont badmouth mojo
dont badmouth mojodont badmouth mojo
dont badmouth mojo
 
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
Как сделать стриминг для сервиса, который хранит миллионы видеофайлов — Лев Т...
 
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmarkAnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmark
 
Flask как хорошее решение для веб проекта
Flask как хорошее решение для веб проектаFlask как хорошее решение для веб проекта
Flask как хорошее решение для веб проекта
 
Контроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времениКонтроль качества и сопровождение программ в реальном времени
Контроль качества и сопровождение программ в реальном времени
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Мой Modern Perl
Мой Modern PerlМой Modern Perl
Мой Modern Perl
 

Similar to С чем едят JS-дебаггур?!

Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Ontico
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
Relational databases versioning
Relational databases versioningRelational databases versioning
Relational databases versioningAlexey Rusnak
 
ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)Anatoly Yumashev
 
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ..."Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...HackIT Ukraine
 
Offline first
Offline firstOffline first
Offline firstwtfil
 
Отладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/AjaxОтладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/AjaxAlexander Shurkayev
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentIntersog
 
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...Ivan Korolev
 
По колено в Си++ г... коде
По колено в Си++ г... кодеПо колено в Си++ г... коде
По колено в Си++ г... кодеTatyanazaxarova
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"QA Dnepropetrovsk Community (Ukraine)
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...
QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...
QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...QAFest
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Ontico
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
 
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовMskDotNet Community
 

Similar to С чем едят JS-дебаггур?! (20)

Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
Стабильность WebGL приложений / Кирилл Дмитренко (Яндекс)
 
ChromeDriver Jailbreak
ChromeDriver JailbreakChromeDriver Jailbreak
ChromeDriver Jailbreak
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
Relational databases versioning
Relational databases versioningRelational databases versioning
Relational databases versioning
 
ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)ППП (Пишем Плагины Правильно)
ППП (Пишем Плагины Правильно)
 
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ..."Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
"Системы уникализации и идентификации пользователей в сети. Методы защиты от ...
 
Parallel STL
Parallel STLParallel STL
Parallel STL
 
Offline first
Offline firstOffline first
Offline first
 
Отладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/AjaxОтладка и профилирование JavaScript/Ajax
Отладка и профилирование JavaScript/Ajax
 
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps DevelopmentMobile Monday Kiev#1 - How to save time in Mobile Apps Development
Mobile Monday Kiev#1 - How to save time in Mobile Apps Development
 
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
Minimal Version Selection - dependency management in Go 1.11, Golang Meetup 0...
 
По колено в Си++ г... коде
По колено в Си++ г... кодеПо колено в Си++ г... коде
По колено в Си++ г... коде
 
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
Артем Розуменко - "Как и зачем разрабатывать собственный фреймворк?"
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
бегун
бегунбегун
бегун
 
QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...
QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...
QA Fest 2018. Святослав Логин. Что такое Metasploit? Как его использовать для...
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)
 
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ruБаба-Яга против! — Роман Дворнов, Ostrovok.ru
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
 
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
 

С чем едят JS-дебаггур?!

Editor's Notes

  1. точки останова и останова по условию отслеживать, устанавливать, изменять значения переменных трассировка (событий, исключений, XHR, DOM) отслеживание воркеров (Worker) Трассировка — процесс пошагового выполнения программы. В режиме трассировки программист видит последовательность выполнения команд и значения переменных на данном шаге выполнения программы, что позволяет легче обнаруживать ошибки. Трассировка может быть начата и окончена в любом месте программы, выполнение программы может останавливаться на каждой команде или на точках останова, трассировка может выполняться с заходом в процедуры и без заходов.
  2. точки останова и останова по условию отслеживать, устанавливать, изменять значения переменных трассировка (событий, исключений, XHR, DOM) отслеживание воркеров (Worker) Трассировка — процесс пошагового выполнения программы. В режиме трассировки программист видит последовательность выполнения команд и значения переменных на данном шаге выполнения программы, что позволяет легче обнаруживать ошибки. Трассировка может быть начата и окончена в любом месте программы, выполнение программы может останавливаться на каждой команде или на точках останова, трассировка может выполняться с заходом в процедуры и без заходов.
  3. 1) Кто знает как установить точку останова?
  4. Следующее останов по условию ИНТ: как остановится при переборе for на нужной нам записи?
  5. Перешли по стеку, изменился скоуп переменных Но точка останова осталась там же
  6. список переменных (scope variables) локальные переменные (local) переменные замыкания разных уровней (closure) глобальные переменные (global) выражения (watch expressions) отслеживание переменных текущего локального скоупа (local scope) отслеживание логических выражений отслеживание значений возвращаемых функциями
  7. Кто знает что такое трасировка и как ей пользоваться?
  8. 1 Выполнение до следующей точки останова 2 Выполнить текущую строку 3 Выполнить шаг во внутрь функции 4 Вернуться в предыдущую точку вызова (так же можно перейти по стеку) 5 Выключить брекпоинты 6 Останов на эксепшенах
  9. Сказать что точки входа есть и в колстеке
  10. ИНТ: Решение задачи, на хендлить реквесты на какойто урл? Счелкаем на плюсик Получам скоп и стек
  11. ИНТ: как открыть инспектор элементов? Правок кнопокой мыши
  12. ИНТ: как открыть инспектор элементов? Правок кнопокой мыши
  13. Уточним, что тут так же пожно хендлить обработку DOM объектов Resize, scroll, select, blur, DOM man, focusin, focusout, node remove Dragenter, dragover, dragleave, drop Settimer, clear timer, timer fired
  14. ИНТ: после того как произошел эксепшен практически ничего не узнать, как хендлить ситуацию предшествующею эксепшене? Жмем на кнопочку эксепшенов Константе пытаемся присвоить занчение
  15. Ошибка в консоли Примимущество в том, что мы видет состояние которое приводит к экспшену
  16. По воркеру надо знать что он есть Возможность удаленного отслеживания
  17. Появление нового дебаггера spy-js С интеграцией в jetBrain продукты
  18. точки останова и останова по условию отслеживать, устанавливать, изменять значения переменных трассировка (событий, исключений, XHR, DOM) отслеживание воркеров (Worker) Трассировка — процесс пошагового выполнения программы. В режиме трассировки программист видит последовательность выполнения команд и значения переменных на данном шаге выполнения программы, что позволяет легче обнаруживать ошибки. Трассировка может быть начата и окончена в любом месте программы, выполнение программы может останавливаться на каждой команде или на точках останова, трассировка может выполняться с заходом в процедуры и без заходов.
  19. И пусть у Вас будет не будет багов