Лекция
Привет, сегодня поговорим про отладка в браузере chrome, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое отладка в браузере chrome , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).
Перед тем, как двигаться дальше, поговорим об отладке скриптов.
Все современные браузеры поддерживают для этого «инструменты разработчика». Исправление ошибок с их помощью намного проще и быстрее.
На текущий момент самые многофункциональные инструменты — в браузере Chrome. Также очень хорош Firebug (для Firefox).
Зайдите на страницу tutorial/debugging/pow/index.html браузером Chrome.
Откройте инструменты разработчика: F12 или в меню Инструменты > Инструменты Разработчика
.
Выберите сверху Sources
:
Кнопки, которые мы будем использовать:
Зашли на страницу? Раскройте список скриптов, нажав на кнопку 1, и выберите pow.js
. Кликните на 6й строке, прямо на цифре 6.
Поздравляю! Вы поставили свой первый «брейкпойнт».
Слово Брейкпойнт (breakpoint) — часто используемый английский жаргонизм. В русскоязычных пособиях используется термин «точка остановки». Это то место в коде, где отладчик будет останавливать выполнение JavaScript, как только оно до него дойдет.
В остановленном коде можно посмотреть любые переменные, выполнить команды и т.п.
Справа-снизу находится вкладка Breakpoints, в ней можно:
debugger
:
1 |
function pow(x, n) { |
2 |
... |
3 |
debugger; // <-- отладчик остановится тут |
4 |
... |
5 |
} |
Это удобно, если остановка нужна только при определенном значении переменной или параметра функции.
Наша функция выполняется сразу при загрузке страницы, так что самый простой способ активировать JavaScript — перезагрузить ее. Итак, нажимаем F5.
Если вы сделали все, как описано выше, то выполнение прервется как раз на 6й строке.
Обратите внимание на информационные вкладки справа (отмечены стрелками).
В них мы можем посмотреть текущее состояние:
Watch Expressions
— показывает текущие значения любых выражений.
Можно раскрыть эту вкладку, нажать мышью +
на ней и ввести любое выражение или имя переменной. Отладчик будет отображать его значение.
Call Stack
— вложенные вызовы (иначе называют «стек вызовов»).
На текущий момент видно, отладчик находится в функции pow
(pow.js, строка 6), вызванной из анонимного кода (index.html, строка 13).
Scope Variables
— переменные.
На текущий момент строка 6 еще не выполнилась, поэтому result
равен undefined
.
В Local
показываются переменные функции: объявленные через var
и параметры. Вы также можете там видеть переменную this
, она создается автоматически. Если вы не знаете, что она означает — ничего страшного, мы это обсудим в главе Контекст this в деталях.
В Global
— глобальные переменные, которые находятся вне функций.
Пришло время погонять скрипт и «оттрейсить» (от англ. trace, отслеживать) его работу.
Обратим внимание на панель управления в ней есть 4 основные кнопки:
Нажмите на эту кнопку.
Вы увидите, что отладчик остался на той же строке, но в Call Stack
появился новый вызов. Это произошло потому, что в 6й строке находится рекурсивный вызов функции pow
, т.е. управление перешло в нее опять, но с другими аргументами.
Походите по стеку вверх-вниз — вы увидите, что действительно аргументы разные.
Нажмите на эту кнопку.
Отладчик перейдет на строку 7. Все правильно, хотя есть и тонкость.
Дело в том, что во вложенном вызове pow
есть брейкпойнт, а на включенных брейкпойнтах отладчик останавливается всегда. Даже если вложенный вызов и нажата эта кнопка.
…Но в данном случае вложенный вызов будет с n=1
, поэтому сработает if
и до строки 6 управление не дойдет. Поэтому и остановки нет.
Удобно в случае, если мы нечаянно вошли во вложенный вызов, который нам совсем не интересен — чтобы быстро из него выйти.
Процесс отладки заключается в том, что мы останавливаем скрипт, смотрим, что с переменными, переходим дальше и ищем, где поведение отклоняется от правильного.
Правый клик на номер строки позволяет запустить выполнение кода до нее (Continue to here).
Это очень удобно, если промежуточные строки нас не интересуют.
При отладке, кроме просмотра переменных, бывает полезно запускать команды JavaScript. Для этого нужна консоль.
В нее можно перейти, нажав кнопку «Console» вверху-справа, а можно и открыть в дополнение к отладчику, нажав на кнопку или клавишей ESC.
Самая любимая команда разработчиков: console.log(...)
.
Она пишет переданные ей аргументы в консоль, например:
1 |
// результат будет виден в консоли |
2 |
for ( var i=0; i<5; i++) { |
3 |
console.log( "значение" , i); |
4 |
} |
Полную информацию по специальным командам консоли вы можете получить на страницеhttp://firebug.ru/commandline.html. Эти команды также действуют в Firebug (отладчик для браузера Firefox).
Консоль поддерживают все браузеры, но IE<10 поддерживает не все функции. Логирование работает везде, пользуйтесь им вместо alert
.
Ошибки JavaScript выводятся в консоли.
Например, откройте страницу tutorial/debugging/pow-error/index.html. Предыдущую отладку можно прекратить (очистить брейкпойнты и затем продолжить ).
В консоли вы увидите что-то подобное:
Да, действительно, это потому что в этом скрипте есть ошибка. Но в чем же дело? Давайте посмотрим, какие были значения переменных на момент отладки. Для этого заставим отладчик остановиться при ошибке, нажав два раза на (до фиолетового цвета).
Кстати, чтобы увидеть эту кнопку, нужно быть именно во вкладке Sources, не в Console.
Теперь перезагрузите страницу. Отладчик остановится на строке с ошибкой:
Можно посмотреть значения переменных. Поставить брейкпойнты раньше по коду и посмотреть, что привело к такой печальной картине.
В данном случае-то все просто: опечатка в имени переменной y
вместо x
. Этот тип ошибки называетсяReferenceError
.
Отладчик позволяет:
debugger
.В этой статье кратко описаны возможности отладчика Google Chrome, относящиеся именно к работе с кодом.
Пока что это все, что нам надо, но, конечно, инструменты разработчика умеют много чего еще. В частности, вкладка Elements — позволяет работать со страницей (понадобится позже), Timeline — смотреть, что именно делает браузер и сколько это у него занимает и т.п.
Осваивать можно двумя путями:
К сожалению, в одной статье не просто дать все знания про отладка в браузере chrome. Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое отладка в браузере chrome и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Из статьи мы узнали кратко, но содержательно про отладка в браузере chrome
Комментарии
Оставить комментарий
Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)