Вопрос по javascript – Как установить точку останова JavaScript из кода в Chrome?

614

Я хочу, чтобы отладчик Chrome сломался на линии кодекс, или используя какой-либо тег комментария, например,console.break().

Или, может быть, лучше: Установите точку останова в XHR в Chrome. Felix Kling
Вы имеете в виду устанавливать точки останова из самого кода, а не устанавливать их с помощью средства отслеживания сценариев в инструментах разработчика? Faris M
Не дубликат. «в Chrome» против «в коде» - это две разные вещи, и этот вопрос применим ко многим не-XHR-сценариям. Да 1 из ответов на другой вопрос отвечает на этот вопрос, но другие не применимы. Я буквально погуглил «установить точку останова javascript из кода chrome», и это первый результат, а другой вопрос даже не на первой странице. AaronLS
ты пыталсяdebugger; или просто используя обычные точки останова на панели инструментов разработчика? diaho

Ваш Ответ

10   ответов
16

debugger; это путь. Я написал небольшой скрипт, который вы можете использовать из командной строки в браузере для установки и удаления точки останова непосредственно перед вызовом функции:http: //andrijac.github.io/blog/2014/01/31/javascript-breakpoint

6

debugger является зарезервированным ключевым словом EcmaScript и дает дополнительную семантику начиная с ES5

В результате его можно использовать не только в Chrome, но и в Firefox и Node.jsс помощьюnode debug myscript.js.

The стандарт говорит:

Синтакси

DebuggerStatement :
    debugger ;

Семантик

Оценка производства DebuggerStatement может позволить реализации вызвать точку останова при запуске под отладчиком. Если отладчик отсутствует или не активен, это утверждение не имеет видимого эффекта.

Производство DebuggerStatement: отладчик; оценивается следующим образом:

Если средство отладки, определенное реализацией, доступно и включено, то Выполнить заданное реализацией действие отладки. Пусть результат будет значением, определенным реализацией. Else Пусть результат будет (обычный, пустой, пустой). Возвращенный результат.

Никаких изменений в ES6.

3

и есть много причин, по которым вы можете захотеть это сделать. Например, отладка бесконечного цикла javascript рядом с началом загрузки страницы, которая мешает корректной загрузке набора инструментов разработчика chrome (или firebug).

См. Раздел 2 из

http: //www.laurencegellert.com/2012/05/the-three-ways-of-setting-breakpoints-in-javascript

или просто добавьте строку, содержащую слово отладчик, в ваш код в нужной контрольной точке.

2

breakpoint прекратит выполнение и позволит вам изучить значения JavaScript.

После изучения значений вы можете возобновить выполнение кода (обычно с помощью кнопки воспроизведения).

Отладчик: -

Отладчик; останавливает выполнение JavaScript и вызывает функцию отладки.

Оператор отладчика приостанавливает выполнение, но не закрывает файлы и не очищает переменные.

Example:-
function checkBuggyStuff() {
  debugger; // do buggy stuff to examine.
};
2

debug(functionName) для отладки функций.

https: //developers.google.com/web/tools/chrome-devtools/javascript/breakpoints#functio

19

debug(function), чтобы сломаться, когдаfunction называется

Справочник по API командной строки: отладка

Очень приятно - похоже, что Chrome только сейчас, но в любом случае это моя основная платформа. Теперь мне просто нужно помнить, чтобы перестать называть мой глобальный флаг отладки "debug" ... brichins
Справочник по API командной строки Chrome Debugger содержит некоторые другие довольно полезные вещи, о которых я не знал. Благодарность Pedi T.
1054

debugger; в вашем коде. Если консоль разработчика открыта, выполнение будет прервано. Это работает и в firebug.

@ ScottyG MDN менее блестящий, более полезный: Developer.mozilla.org / EN-US / Docs / Web / JavaScript / Справочник / ... jpaugh
Является ли трюк с таймером обычной практикой? Проверка / обоснование? Justus Eapen
Хорошая хитрость - запустить отладчик через несколько секунд:setTimeout(function(){debugger;}, 3000); Shahar
@ JustusEapen Проблема в том, что Javascript является однопоточным, поэтому он не может прервать выполнение кода. Vitruvius
Это очень полезно. Обратите внимание такжеdebugger; поддерживается во всех основных браузерах. За дополнительной информацией: W3schools.com / jsref / jsref_debugger.asp ScottyG
24
Это устанавливает точку останова в обработчике кликов, вероятно, не то, что хотел ОП ııı
@ PeterV Было бы полезно, если бы я просто пытался открыть свой код в месте, которое было близко к блоку кода, который я отлаживал ... но не хотел отлаживать все время ... но да, если просто открыть отладчик ... тогда для этого есть нажатие клавиши. Armstrongest
0

да широко используются для отладки JavaScript с помощью кода

С помощьюconsole.log() распечатать значения в консоли браузера. (Это поможет вам понять значения в определенных точках вашего кода)

лючевое слово @Debugger. Добавлятьdebugger; в местах, которые вы хотите отладить, откройте консоль разработчика браузера и перейдите на вкладку источников.

Дополнительные инструменты и способы отладки кода JavaScript приведены в эта ссылка от W3School.

8

где находится ваш код. Слева от номера строки нажмите. Это установит точку останова.

Скриншот

После этого вы сможете отслеживать точки останова на правой вкладке (как показано на скриншоте).

@ Инструменты разработчика Petruza предоставляют вкладку «Точки останова XHR». Florian Margaine
Это не отвечает на вопрос, он хочет быть в состоянии сделать это в коде robertc
@ FlorianMargaine, больше нет вкладки «Сценарии». Пожалуйста, обновите изображение. Pacerier
xn .: «Вот картинка с моим ответом, когда он был еще маленьким ребенком с 0 голосами. Сейчас все это выросло». AaronLS
Если вы загружаете JS-скрипт с помощью Ajax-вызова, он здесь не будет отображаться, поэтому в коде требуется точка останова. Petruza

Похожие вопросы