Подтвердить что ты не робот

Google Chrome: как отлаживать случайные ошибки "Максимальный размер стека вызовов"

В сложном приложении JavaScript (с jQuery и Ember) JavaScript будет время от времени случайно разбиваться, либо во время загрузки страницы, либо когда я выполняю действие на странице. Ошибка выглядит следующим образом (снимок экрана):

Uncaught RangeError: Maximum call stack size exceeded
  Class.proto
  Class.proto
  ...

... с несколькими страницами строк трассировки стека Class.proto, но никакой информации о источнике/строке, даже в нижней части трассы.

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

Я смог воспроизвести этот только в Chrome Canary (22.0.1209.0), а не в Chrome stable или Firefox. Приложение не разговаривает с какой-либо внешней службой или не делает никаких запросов Ajax.

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

Мой вопрос: Что я могу сделать, чтобы отладить эту проблему?

4b9b3361

Ответ 1

Включите "Исключить исключения" на панели инструментов разработчика Chrome. Используйте этот значок This is the icon в нижнем колонтитуле панели инструментов на вкладке Источники (есть 3 состояния!)

Он должен остановить ваш код, и вы увидите стек!