@web-quest3

Что имеется в виду в статье про отладчик с learn.javascript.ru?

Скопирован текст из https://learn.javascript.ru/debugging-chrome
Некоторое мне не совсем понятно, подскажите пожалуйста, свои вопросы буду выделять КАПСОМ
Управление выполнением

Пришло время, как говорят, «погонять» скрипт и «оттрейсить» (от англ. trace – отслеживать) его работу.

Обратим внимание на панель управления справа-сверху, в ней есть 6 кнопок:

– продолжить выполнение, горячая клавиша F8.
Продолжает выполнения скрипта с текущего момента в обычном режиме. Если скрипт не встретит новых точек останова, то в отладчик управление больше не вернётся.
отладчик управление больше не вернётся (1 ЧТО ТУТ ИМЕЕТСЯ ВВИДУ, ЧТО ЗНАЧИТ УПРАВЛЕНИЕ НЕ ВЕРНЕТСЯ В ОДЛАДЧИК?)
Нажмите на эту кнопку.

Скрипт продолжится, далее, в 6-й строке находится рекурсивный вызов функции pow, т.е. управление перейдёт в неё опять (с другими аргументами) и сработает точка останова, вновь включая отладчик.

При этом вы увидите, что выполнение стоит на той же строке, но в Call Stack появился новый вызов.

Походите по стеку вверх-вниз – вы увидите, что действительно аргументы разные.

– сделать шаг, не заходя внутрь функции, горячая клавиша F10.
Выполняет одну команду скрипта. Если в ней есть вызов функции – то отладчик обходит его стороной, т.е. не переходит на код внутри.
сделать шаг, не заходя внутрь функции, горячая клавиша F10. (2 НЕ СОВСЕМ ПОНЯТНО ЕСЛИ МЫ НЕ ЗАЙДЕМ В ФУНКЦИЮ ТО КАК МЫ ПОЛУЧИМ ЕЕ РЕЗУЛЬТАТ, В СЛУЧАЕ ЕСЛИ НАМ НУЖЕН РЕЗУЛЬТАТ ФУНКЦИИ? ИЛИ ЖЕ ЕСЛИ ДАЛЬШЕ ЗНАЧЕНИЕ ВЫЧИСЛЕНИЯ ФУНКЦИИ БУДЕТ ИСПОЛЬЗОВАТЬСЯ ТО МЫ СЛОВИМ ОШИБКУ? ВООБЩЕ ЗАЧЕМ ЭТО НУЖНО, ЕСЛИ МОЖНО ПОРАЗВЕРНУТЕЕ ПРИМЕР И ПОЯСНЕНИЕ)
Эта кнопка очень удобна, если в текущей строке вызывается функция JS-фреймворка или какая-то другая, которая нас ну совсем не интересует. Тогда выполнение продолжится дальше, без захода в эту функцию, что нам и нужно.

Обратим внимание, в данном случае эта кнопка при нажатии всё-таки перейдёт внутрь вложенного вызова pow, так как внутри pow находится брейкпойнт, а на включённых брейкпойнтах отладчик останавливается всегда.

– сделать шаг, горячая клавиша F11.
Выполняет одну команду скрипта и переходит к следующей. Если есть вложенный вызов, то заходит внутрь функции. (3 ПОДЕЛИТЕСЬ НАГЛЯДНЫМ ПРИМЕРОМ)

Эта кнопка позволяет подробнейшим образом пройтись по очереди по командам скрипта.

– выполнять до выхода из текущей функции, горячая клавиша Shift+F11.
Выполняет команды до завершения текущей функции.
(4 ПОДЕЛИТЕСЬ НАГЛЯДНЫМ ПРИМЕРОМ)
Эта кнопка очень удобна в случае, если мы нечаянно вошли во вложенный вызов, который нам не интересен – чтобы быстро из него выйти.
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
lxsmkv
@lxsmkv
Test automation engineer
Нужно понимать что программа выполяется последовательно, строка за строкой. Если в строке есть вызов функции, обрабатывается функция потом управление возвращается обратно к основному телу скрипта. Это как если бы вы начав читать статью переходили на каждую ссылку читали что там, а если есть ссылки там, то еще дальше вглубь а потом возвращались обратно. Это т.н. обход в глубину.

1. В точке останова исполнение останавливается и управление передается отладчику. Т.е. отладчик (программа) и соответственно программист может повлиять на ход выполения программы в тот момент когда программа остановлена. Как только мы "отпускаем" программу, она выполняется до конца, в том случае если мы никаких дополнительных точек останова не указали. Или она будет выполняться до следующей точки останова, где мы снова получим управление.

2. Функция будет выполена, но мы не будем заходить в нее, и обходить пошагово, а перейдем сразу к следующей строке.

3. Одиночный шаг он идет точь в точь по следу выполения программы. Если есть вызов другой функции, мы переходим туда, а оттуда дальше каждый цикл будем прходить до самого конца и так далее. Это самый мелкий шаг при отладке. Конечно на практике никто не станет проходить весь скрипт одиночными шагами (см. также 2.), а только отдельные его части которые нужно рассмотреть так сказать "в замедленном действии".

4. Мы зашли в функцию, но нам не интересно пошагово ее обходить а нас интересует лишь ее результат. Так мы промотаем функцию до того момента когда она соберется вернуть результат и сможем глянуть, что она вернет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы