Консоль IE11: увеличение глубины трассировки стека
В Chrome вы можете увеличить глубину трассировки стека, установив флаг во время выполнения (используя --js-flags="--stack-trace-limit <value>"
) или через консоль (используя Error.stackTraceLimit
), объяснено здесь: https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
Это также возможно в Firebug, насколько я понимаю, хотя я не так хорошо знаком со сложностями этого инструмента.
Есть ли какие-либо условия для этого в IE11? Я имею дело с IE-специфичной проблемой, и трассировка стека не проливает свет на код моей библиотеки (AngularJS). Увеличение глубины трассировки стека, вероятно, поможет мне здесь.
Спасибо!
2 ответа
Похоже, что не существует документированного параметра командной строки, который бы предлагал этот элемент управления. Однако вы можете увеличить трассировку стека в Internet Explorer так же, как и в других популярных браузерах:
Error.stackTraceLimit = 20; // The default is 10
Internet Explorer поддерживает это свойство в конструкторе ошибок начиная с версии 10. Он не будет работать в предыдущих версиях. В 2012 году IEBlog продемонстрировал несколько примеров использования этого свойства, а также использование Error.stack
,
Кажется, нет никакого способа сохранить этот параметр для всех запросов страниц. Единственный вариант, который я мог бы предложить здесь, это настроить прокси, который добавляет это ко всем ответам сервера. Естественно, я бы посоветовал Фиддлеру за это.
Как и другие браузеры, Internet Explorer 11 поддерживает console.trace
, Поэтому вам не нужно ждать ошибки, чтобы получить трассировку стека. Вы можете вызвать его произвольно в любое время.
Последняя особенность, на которую стоит обратить внимание, - это профилирование. Вы можете управлять сеансами профилирования через console.profile
а также console.profileEnd
(оба из которых являются довольно стандартными), если вы хотите захватить только определенную часть жизненного цикла ваших приложений.
Я нашел ответ, просто поиграв в консоли - я знал, что Error
объект. Как оказалось, Error
объект в IE11 поддерживает то же самое stackTraceLimit
свойство, которое делают Chrome и Firebug (я полагаю, они стандартизировали его, наконец). Это можно установить в консоли, аналогично Google Chrome (пример: Error.stackTraceLimit = 30
), и оно будет сохраняться с момента его установки до следующего события навигации - перехода назад, вперед, куда-либо еще или обновления страницы.
По умолчанию для stackTraceLimit установлено значение 10.
Мне нужно было установить это при загрузке страницы для отладки ошибки, и поэтому я смог установить раннюю точку останова и установить вручную Error.stackTraceLimit
, Я еще не нашел способ сделать это постоянным во время навигации, и я не знаю, есть ли флаг запуска или что-то еще, чтобы установить его более постоянно. (Я бы постулировал, что где-то есть запись в реестре.)
Я надеюсь, что это помогает кому-то еще, кто сталкивается с этой проблемой. Следует отметить, что новые инструменты IE11 будут автоматически заполнять свойства нативного объекта, что на самом деле очень приятно, так что вы можете быстро увидеть, какие другие свойства и методы Error
Объект имеет. (Это на самом деле, как я нашел рассматриваемое свойство.)