JavaScript: есть ли способ заставить Chrome сломать все ошибки? - PullRequest
246 голосов
/ 10 февраля 2010

Я ищу в Chrome эквивалент функциональности Firebug "разбить на все ошибки". На вкладке «Сценарии» Chrome имеет «паузу для всех исключений», но это не совсем то же самое, что разбивать все ошибки.

Например, при загрузке страницы с помощью следующего кода я бы хотел, чтобы Chrome разбил строку foo.bar = 42. Вместо этого даже при включении «Пауза для всех исключений» я не получаю ожидаемого результата.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <script type="text/javascript">

            function doError() {
                foo.bar = 42;
            }

            window.onload = function() {
                try {
                    doError();
                } catch (e) {
                    console.log("Error", e);
                }
            }
        </script>
    </head>
    <body>
    </body>
</html>

Вы можете попробовать код, вставленный выше на этой странице или с помощью jsFiddle .

Ответы [ 5 ]

264 голосов
/ 26 июня 2013

У меня возникли проблемы с его получением, поэтому я публикую фотографии, показывающие различные варианты:

Хром 71.0.3578.98 [18 декабря 2018]

Очень похожий пользовательский интерфейс, поскольку по крайней мере Chrome 38.0.2125.111 [11 декабря 2014]

На вкладке Sources: enter image description here Screenshot from Chrome 50.0.2661.75

Когда кнопка активирована, вы можете Pause On Caught Exceptions с флажком ниже: enter image description here


Предыдущие версии

Chrome 32.0.1700.102 [03 февраля 2014]

enter image description here

enter image description here enter image description here enter image description here

Хром 27.0.1453.93 Стабильный

Debug options

204 голосов
/ 03 января 2011

Редактировать: Исходная ссылка, на которую я ответил, теперь недействительна . Более новый URL будет https://developers.google.com/web/tools/chrome-devtools/javascript/add-breakpoints#exceptions по состоянию на 2016-11-11.

Я понимаю, что на этот вопрос есть ответ, но он больше не точен. Воспользуйтесь ссылкой выше ^


(ссылка заменена на отредактированную выше) - теперь вы можете установить ее на все исключения или только на необработанные. (Обратите внимание, что вы должны быть на вкладке Sources , чтобы увидеть кнопку.)

Chrome также добавил некоторые другие действительно полезные возможности точки останова, такие как взлом при изменениях DOM или сетевых событиях.

Обычно я не отвечал бы повторно на вопрос, но у меня был тот же самый вопрос, и я нашел этот теперь неправильный ответ, поэтому я решил поместить эту информацию здесь для людей, которые пришли позже в поиске , :)

17 голосов
/ 10 апреля 2013

Теперь это поддерживается в Chrome с помощью кнопки «Приостановить все исключения».

Чтобы включить:

  • Перейдите на вкладку «Источники» в Chrome Developer Tools
  • Нажмите кнопку «Пауза» в нижней части окна, чтобы переключиться в режим «Пауза для всех исключений».

Обратите внимание, что эта кнопка имеет несколько состояний. Продолжайте нажимать кнопку, чтобы переключиться между

  • «Пауза на все исключения» - кнопка окрашена голубой
  • «Пауза в необработанных исключениях», кнопка имеет цвет фиолетовый .
  • «Не останавливаться на исключениях» - кнопка окрашена серый
1 голос
/ 23 февраля 2010

К сожалению, инструменты разработчика в Chrome, по-видимому, не могут «останавливаться на всех ошибках», как это делает Firebug.

1 голос
/ 13 февраля 2010

Почти любая ошибка вызовет исключения. Единственные ошибки, о которых я могу подумать, что они не будут работать с опцией «пауза при исключениях», - это синтаксические ошибки, которые происходят до того, как исполняется какой-либо код, поэтому в любом случае нет места для паузы, и ни один код не будет выполняться. 1001 *

Очевидно, что Chrome не будет останавливаться на исключении, если он находится внутри блока try-catch. Это только делает паузу на неисследованных исключениях. Я не знаю, как это изменить.

Если вам просто нужно знать, на какой строке произошло исключение (тогда вы можете установить точку останова, если исключение воспроизводимо), объект Error, данный блоку catch, имеет свойство stack, которое показывает, где находится исключение. произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...