Как увеличить количество записей в стеке вызовов в инструментах разработчика Google Chrome (или Firebug Firefox)? Я получаю ошибку Javascript в стороннем элементе управления Javascript. Все вызовы в окне "Стек вызовов" не принадлежат моему собственному коду. Я хочу знать, какая строка в моем коде вызвала последовательность событий. Стек вызовов недостаточно велик, чтобы отображать что-то из моего собственного кода.
Как увеличить количество записей в стеке вызовов в инструментах разработчика Google Chrome (или Firefox)?
Ответ 1
Решение Chrome
https://github.com/v8/v8/wiki/Stack%20Trace%20API
может устанавливаться через командную строку при запуске --js-flags="--stack-trace-limit <value>"
или во время выполнения при загрузке страницы: Error.stackTraceLimit=undefined //unlimited stack trace
Ответ 2
В Chrome (также в узле) вы можете ввести его в консоли js:
Error.stackTraceLimit = Infinity;
В качестве альтернативы см. эту страницу для флагов командной строки Chrome: https://v8.dev/docs/stack-trace-api (необходимо перезапустить Chrome):
$ google-chrome --js-flags="--stack-trace-limit 10000"
Ответ 3
Я не думаю, что существует ограничение на размер стека вызовов *). Обычно трассировка стека, которая, кажется, выходит из ниоткуда, возникает либо из
- прослушиватель событий
- таймаут (
window.setTimeout
) - интервал (
window.setInterval
) - некоторая загрузка script после загрузки страницы (возможно, iframe)
*) Конечно, технически, конечно, есть какой-то предел, но я считаю, что это практически не имеет значения. Вероятно, длинный или что-то.
Изменить: Из Исходный код Firebug:
if (trace.frames.length > 100) // TODO in the loop above
{
var originalLength = trace.frames.length;
trace.frames.splice(50, originalLength - 100);
var excuse = "(eliding "+(originalLength - 100)+" frames)";
trace.frames[50] = new StackFrame.StackFrame({href: excuse}, 0, excuse,
[], null, null, context);
}
Таким образом, Firebug всегда будет показывать первые 50 и последние 50 элементов ( "кадры" ) стека вызовов.