Я могу заставить отладчик Internet Explorer врываться в продолжительный код JavaScript?

У меня есть страница, которая имеет византийский объем выполнения кода JavaScript. В Internet Explorer только и только версии 8, я получаю длинный сценарий, предупреждающий, что я могу надежно воспроизвести. Я подозреваю, что это - обработчики событий, инициировавшие себя в бесконечном цикле.

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

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

Существует подобный отправленный вопрос, но данные ответы были для not-the-right-tool или не ужасно полезного совета устранить половину моего кода за один раз двоичного поиска на бесконечный цикл. Если мой код был достаточно прост, что я мог сделать это, это, вероятно, не будет получать бесконечный цикл во-первых. Если бы я мог бы воспроизвести проблему в Firebug, я, вероятно, был бы намного более счастливым также.

7
задан oers 13 April 2012 в 06:39
поделиться

2 ответа

Я уже сталкивался с этим раньше, и мне повезло с включением инструментов разработчика вместе с Visual Studio. При обнаружении ошибки загрузка страницы останавливается, и я мог затем загрузить Visual Studio, чтобы увидеть конкретную строку, вызывающую проблему.

На этом сайте есть некоторая информация об использовании Visual Studio вместе с отладчиком Internet Explorer: Использование Visual Studio для отладки JavaScript в IE

0
ответ дан 7 December 2019 в 16:41
поделиться

Вот что я бы сделал:

  1. Перейдите на http://www.microsoft.com/whdc/devtools/debugging/default .mspx и установите средства отладки для Windows. Вы хотите запустить WinDBG, когда он будет установлен.

  2. Выполните действия, описанные на http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx#a , чтобы настроить соединение с сервером символов и автоматически загрузить символы на ваш локальный компьютер. диск (c: \ websymbols - или что угодно).

  3. Запустите IEXPLORE.EXE под WinDBG. В этом случае вам поможет файл справки. Вам понадобится пара команд, как только вы запустите Internet Explorer и тому подобное. Во-первых, приступайте к работе над большим скриптом.

  4. Взломать отладчик (CTRL-SCROLLLOCK для прерывания).
    а. Выполните LN , чтобы «перечислить ближайшие», чтобы получить загруженные файлы DLL. Надеюсь, у вас в памяти загружен файл JSCRIPT.DLL.
    б. Введите .reload / f , чтобы принудительно перезагрузить все символы. Это займет некоторое время. Теперь, когда это будет сделано, снова введите LN , и вы должны увидеть, что в вашу систему загружен соответствующий файл JSCRIPT.PDB в каталог символов, который вы установили ранее.

  5. В зависимости от того, что вы хотите сделать, вам может потребоваться перезапустить отладчик, но вы можете сделать это: После первоначального перерыва при загрузке WINDBG вы можете ввести «sxe ld jscript.dll ", и он сломается при загрузке jscript.dll .

  6. Это сложная часть, потому что после загрузки у вас не будет кода для jscript.dll , но у вас есть подходящие символы (если они не загружены, перезагрузите их с помощью .reload / f ). Вы можете просмотреть доступные функции, набрав «x! jscript», и вы получите полный список всех функций и переменных.

  7. Выберите одну, установите точку останова, и тогда вы сможете отслеживать, что происходит с вашим скриптом.

  8. Если ничего другого не происходит, используйте . reload / f process , вы можете получить соответствующие файлы jscript.pdb , загруженные в вашу систему. Возможно, вы могли бы использовать их вместе с Visual Studio для выполнения дополнительной отладки таким образом, но я ' m не уверен, насколько хорошо это сработает.

3
ответ дан 7 December 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: