Альтернатива приостановке выполнения (которая обычно отлично работает, но плохо работает на страницах, которые часто выполняют периодический код)
Вы можете использовать Chrome Profiler для записи в течение короткого периода времени. После того, как вы закончите запись, он покажет вам сводку времени процессора, потраченного на любую из функций, которые были выполнены во время записи. Мы не особо заботимся о времени процессора, просто использовали этот инструмент, потому что он покажет нам, какие функции были выполнены.
В основном просто начать запись:
Затем выполните свое действие (например, нажмите кнопку на веб-странице или выполните все, что приведет к выполнению интересного кода). Затем остановите запись и просмотрите результат:
Обратите внимание, что я использую режим просмотра «сверху вниз», который показывает вам стек вызовов, и вы можете перейти к детализации, чтобы увидеть, какие функции в конечном итоге были вызваны. Например, сначала была вызвана некоторая анонимная функция (вероятно, в результате setTimeout или, возможно, какого-то обработчика события click), а затем она вызвала некоторый метод, идентифицируемый s.track.s.t
, который затем вызвал s_doPlugins
и так далее ... Важная вещь в том, что в режиме сверху вниз записи в верхней части дерева формируют начало стека вызовов, и поэтому они обычно являются функциями, зарегистрированными некоторой функцией таймера (setTimeout
, setInterval
, requestAnimationFrame
и т. д. ...) или какой-либо обработчик событий (click
, mousemove
, load
и т. д. ...).
Вы также можете использовать режим просмотра «Диаграмма», который показывает, какая функция была вызвана и в какое время, на графике слева направо. Это поможет вам определить, какую функцию вы действительно ищете, потому что у вас, вероятно, есть представление о времени выполнения кода внутри вашей записи (например, прямо посередине).
Кстати - я полагаю, что большинство других современных браузеров имеют аналогичные возможности.