Как пройти код JavaScript в отладчике Google Chrome, как прекратить выполнение скрипта, если я не хочу продолжать? Единственный способ, который я нашел, это закрыть окно браузера.
Нажатие «Обновить эту страницу» запускает остальную часть кода и даже отправляет формы, как если бы вы нажимали F8 «Продолжить».
ОБНОВЛЕНИЕ :
При нажатии F5 (Обновить) во время приостановки скрипта:
- Google Chrome (v22) запускает скрипт. Если скрипт отправляет HTTP-запрос, отображается HTTP-ответ на этот запрос. Исходная страница не обновляется.
- IE 9 просто зависает. Однако в IE есть опция «Остановить отладку», которая при нажатии (при условии, что вы не нажимали F5 ранее) продолжает запускать сценарий вне отладчика.
- Firebug ведет себя идентично Chrome.
Закрытие, а затем повторное открытие окна браузера - это не всегда самый простой способ, потому что это уничтожит состояние сеанса браузера, и это может быть важно. Все ваши точки останова также потеряны.
ОБНОВЛЕНИЕ (январь 2014) :
Обновить во время отладки:
- Chrome v31: позволяет запускать сценарии и останавливается на дальнейших точках останова (но не отправляет ajax-запросы), затем обновляется.
- IE 11: обновление ничего не делает, но вы можете нажать F5, чтобы продолжить.
- Firefox v26: позволяет запускать сценарии, но не останавливается на дальнейших точках останова, отправляет запросы ajax, а затем обновляет.
Вид прогресса!
Перейдите на ту же страницу во время отладки:
- Chrome v31: такой же, как Refresh.
- IE 11: сценарии прекращаются, начинается новый сеанс браузера (аналогично закрытию и открытию снова).
- Firefox v26: ничего не происходит.
Также Juacala предложил эффективный обходной путь. Например, если вы используете jQuery, запустите delete $ из консоли остановит выполнение, как только встретится любой метод jQuery. Я протестировал его во всех вышеперечисленных браузерах и могу подтвердить, что он работает.
ОБНОВЛЕНИЕ (март 2015) :
Наконец, после более чем 2-х лет и почти 10 тысяч просмотров правильный ответ дал Александр К. В Google Chrome есть собственный диспетчер задач, который может завершить процесс вкладки, не закрывая саму вкладку, сохраняя все точки останова и другие вещи без изменений.
Я даже дошел до BrowserStack.com, чтобы протестировать его в Chrome v22, и обнаружил, что это работает даже в то время.
Обходной путь Juacala все еще полезен при отладке в IE или Firefox.
ОБНОВЛЕНИЕ (январь 2019) :
Наконец-то в Chrome Dev Tools добавлен правильный способ остановить выполнение скрипта, что приятно (хотя и немного скрыто). Обратитесь к ответу Джеймса Гентеса за подробностями.
debugger;
в консоль инструментов dev, и он сразу же положит вещи в отладчик и остановит скрипт.Ответы:
В Chrome есть «Диспетчер задач», доступный через Shift + ESCили через
Вы можете выбрать задачу на странице и завершить ее, нажав кнопку «Завершить процесс».
источник
chrome 48
это будет только ЗАКРЫТЬ инструмент Dev, а не завершать его, открывая его снова, вы можете увидеть, что программа все еще работает (tried setInterval()
)С апреля 2018 года в Chrome можно останавливать бесконечные циклы :
Также обратите внимание на сочетания клавиш: F8и Ctrl+\
источник
body
элемент здесь в SO, установил "break on -> поддеревья модификации", а затем щелкнул где угодно. Кнопка выглядит как на скриншоте, который я разместил.Один из способов сделать это - приостановить выполнение сценария, посмотреть, какой код следует за тем, где вы остановились в данный момент, например:
В консоли сделайте следующее:
Затем запустите сценарий: он вызовет фатальную ошибку при попытке доступа
somethingElse
, и сценарий умрет. Вуаля, вы прекратили сценарий.РЕДАКТИРОВАТЬ: Первоначально я удалил переменную. Это не достаточно хорошо. Вы должны удалить функцию или объект, для которого JavaScript пытается получить доступ к свойству.
источник
you have to delete a function or an object
такой мерзкий взлом! (в пользовательском интерфейсе это было бы хорошо, как кнопка « убить всех» )Апрель 2020 года
Начиная с Chrome 80, ни один из текущих ответов не работает. Нет видимой кнопки «Пауза» - вам нужно долго нажимать кнопку «Воспроизвести», чтобы получить доступ к значку Стоп:
источник
Если вы столкнулись с этим при использовании
debugger
заявления,... тогда я думаю, что страница будет работать вечно до тех пор, пока не закончится время выполнения js или следующий перерыв. Предполагая, что вы находитесь в режиме прерывания по ошибке (переключение значка паузы), вы можете убедиться, что произошел разрыв, вместо этого сделав что-то вроде:
или, может быть, вызвать несуществующую функцию:
(Конечно, это не помогает, если вы пытаетесь пройтись по функциям, хотя, возможно, вы могли бы динамически добавить в
throw 1
илиz()
или что-то подобное на панели «Источники», Ctrl-S, чтобы сохранить, а затем Ctrl-R, чтобы обновить ... это может, однако, пропустить одну точку останова, но может работать, если вы находитесь в цикле.)Если вы выполняете цикл и ожидаете
debugger
повторного запуска оператора, вы можете просто ввестиthrow 1
вместо него.Затем, когда вы нажмете Ctrl-R, будет выполнен следующий бросок, и страница обновится.
(протестировано с Chrome v38, около апреля 2017 г.)
источник
Хороший вопрос здесь. Я думаю, что вы не можете прекратить выполнение скрипта. Несмотря на то, что я никогда не искал его, я довольно долго работал с отладчиком Chrome. Я обычно устанавливаю точки останова в своем коде javascript, а затем отлаживаю часть кода, которая мне интересна. Когда я заканчиваю отладку этого кода, я обычно просто запускаю остальную часть программы или обновляю браузер.
Если вы хотите предотвратить выполнение остальной части скрипта (например, из-за вызовов AJAX, которые будут сделаны), единственное, что вы можете сделать, это удалить этот код в консоли на лету, тем самым предотвращая эти вызовы после выполнения , вы можете выполнить оставшийся код без проблем.
Надеюсь, это поможет!
PS: Я пытался найти вариант для прекращения выполнения в некоторых руководствах / руководствах, таких как следующие, но не смог найти его. Как я уже говорил, вероятно, нет такой возможности.
http://www.codeproject.com/Articles/273129/Beginner-Guide-to-Page-and-Script-Debugging-with-C
http://www.nsbasic.com/app/tutorials/TT10.htm
источник
Ссылаясь на ответ, данный @scottndecker на следующий вопрос , в chrome теперь есть опция «отключить JavaScript» в разделе «Инструменты разработчика»:
...
в правом верхнем углуХорошо, что вы можете остановиться и запустить снова, просто установив / сняв отметку.
источник
Вы можете сделать это, но сначала вы должны подготовить свой код.
Инструкции по прекращению выполнения скрипта в Google Chrome Dev Tools:
(1) Сначала подготовьте свой код, создав глобальную переменную:
(2) В любом месте, где вы можете выйти, проверьте значение этой переменной:
(3) Приостановить выполнение скрипта во время или перед вышеупомянутыми тестовыми строками.
(4) Переключиться на консоль
(5) Тип:
(6) Продолжить выполнение скрипта. Сценарий будет,
return false
когда он выполняет тест из шага (2) вышеНоты:
(A) Этот прием работает с глобальными переменными и объектами, но он не будет работать с локальными переменными. Обратите внимание, что this:
newVar = 'never used before';
создает новое свойство объекта window (работает с указанным выше трюком), а это:
var newVar = 'never used before';
создает локальную переменную (НЕ работает с указанным выше трюком!)
(B) Таким образом, вы все еще можете использовать этот трюк с уже запущенным кодом, если у вас есть либо глобальная переменная, либо объект, который вернет false, если у него есть заданное значение.
(C) В крайнем случае, вы можете использовать хитрость Juacala и удалить элемент из DOM (на вкладке элементов), что приведет к ошибке JavaScript. Например, предположим, что у вас есть код
var cartype = $('#cartype').val();
Если вы удалите элемент с ID =cartype
перед этой строкой кода, то js будет разбит на этой строке. Тем не менее, элемент все равно будет отсутствовать при попытке перезапустить код. Описанный выше прием позволяет вам запускать и перезапускать код до бесконечности.Больше примечаний:
(a) Вставьте точку останова в код: просто введите
debugger;
строку отдельно. Если DevTools открыт, сценарий перейдет в отладчик в этот момент. Если DevTools не открыт, код будет игнорировать оператор.(б) Хотите избежать использования библиотеки jQuery при отладке кода? Черный ящик это. См. Инструкции черного ящика для Chrome - или - для Firefox
Благодарность (пожалуйста, посетите и upvote):
Отладка Javascript построчно с помощью Google Chrome
Можно ли изменить значения переменных javascript при отладке в Google Chrome?
источник
Any place where you may wish to quit, test the value of this variable
Это ужасно! Я хочу бросить курить, куда бы я ни шел в данный момент, я не знаю заранее, где это может быть!Вы можете сделать паузу на любом шаблоне XHR, который я считаю очень полезным при отладке подобных сценариев.
Например, я дал точку останова в шаблоне URL, содержащем «/»
источник
Если у вас есть мошеннический цикл, приостановите код в отладчике Google Chrome (маленькая
||
кнопка " " на вкладке "Источники").Переключитесь обратно на сам Chrome, откройте «Диспетчер задач» ( Shift+ESC ), выберите вкладку, нажмите кнопку «Завершить процесс».
Вы получите сообщение Aww Snap, а затем можете перезагрузить ( F5).
Как отмечали другие, перезагрузка страницы в момент приостановки аналогична перезапуску мошеннического цикла и может вызвать неприятные блокировки, если отладчик также затем блокируется (в некоторых случаях приводя к перезапуску Chrome или даже ПК). Отладчику нужна кнопка «Стоп». Nb: Принятый ответ устарел в том смысле, что некоторые его аспекты сейчас явно неверны. Если вы проголосуете за меня, пожалуйста, объясните :) .
источник
Откройте вкладку источника в «Инструментах разработчика», щелкните номер строки в запущенном скрипте, это создаст точку останова, и отладчик прекратит работу там.
источник
Есть много подходящих решений этой проблемы, как упомянуто выше в этом посте, но я нашел небольшой взлом, который может быть вставлен в скрипт или вставлен в консоль Chromes (отладчик) для достижения этой цели:
Это приведет к приостановке выполнения при нажатии
F12
.источник