Я унаследовал довольно большой проект, и я пытаюсь отследить надоедливую ошибку, но для жизни я не могу найти, где вызывается и выполняется это конкретное действие. Есть ли способ просмотреть вызовы Javascript по мере их возникновения? Я могу приостановить выполнение в Firebug, но оно всегда останавливается при вызове addDomListenerOnce.
Просмотр вызовов Javascript по мере их возникновения?
comment
Если вы можете найти, где в коде происходит действие, вы можете поставить точку останова там, а затем посмотреть на трассировку стека, чтобы увидеть, откуда исходит вызов.
- person some   schedule 18.09.2012
comment
Вот в чем проблема, я не могу найти, где в коде происходит действие.
- person Don   schedule 18.09.2012
comment
Так как вы называете это конкретное действие? Как это определяется? В любом приложении существует огромное количество вызовов методов, и они происходят слишком быстро, чтобы вы могли их увидеть.
- person Denys Séguret   schedule 18.09.2012
comment
Может быть, вы хотите увидеть, какие события запускаются? Однажды я написал функцию at, которая заменила addEventListener моей собственной, чтобы я мог регистрировать каждое инициированное событие. Я думаю, что кто-то сделал для этого библиотеку, но я не помню названия. Но вы также должны обрабатывать код, который запускается через setTimeout и setInterval.
- person some   schedule 18.09.2012
Ответы (3)
вы можете добавить эту строку
debugger;
где вы хотите. Например, в качестве первой строки функции, которую вы хотите проверить, выполняется ли она. Это остановит выполнение скрипта, и вы сможете проверить все в firebug.
person
Nicola Peluchetti
schedule
18.09.2012
[правильный вопрос, а не критика] Это кроссбраузерность? Где он определен?
- person Denys Séguret; 18.09.2012
@dystroy не знаю, является ли он полностью кросс-браузерным, нужно проверить, но он точно работает с Firebug/Firefox (который использует постер)
- person Nicola Peluchetti; 18.09.2012
Он определен в ECMA262-5 12.15. Оценка производства DebuggerStatement может позволить реализации вызвать точку останова при запуске под отладчиком. Если отладчик отсутствует или активен, этот оператор не имеет заметного эффекта. Согласно этой записи в блоге, он работает в Firefox с firebug, IE8 и Chrome 9.
- person some; 18.09.2012
В Opera's Dragonfly у вас есть опция «Перерыв на первом операторе нового скрипта» (спасибо, @some)
Это пятая кнопка в верхнем левом углу.
person
Ortiga
schedule
18.09.2012
Точное название — «Перерыв при первом утверждении нового скрипта» (в Opera 12.02).
- person some; 18.09.2012
Все современные браузеры предлагают функции отладки.
Взгляните, например, на функции отладки инструментов Chrome Developer. Очень легко устанавливать точки останова и отслеживать выполнение строка за строкой. Конечно, у вас есть стек вызовов, поэтому вы видите, откуда вызывается функция.
person
Denys Séguret
schedule
18.09.2012