Консоль 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 Объект имеет. (Это на самом деле, как я нашел рассматриваемое свойство.)

Другие вопросы по тегам