У меня есть страница, которая имеет византийский объем выполнения кода JavaScript. В Internet Explorer только и только версии 8, я получаю длинный сценарий, предупреждающий, что я могу надежно воспроизвести. Я подозреваю, что это - обработчики событий, инициировавшие себя в бесконечном цикле.
Инструменты разработчика хромают ужасно под весом выполнения сценария, но я, действительно кажется, могу заставить журнал говорить мне, какую строку сценария это выполняло, когда я прервался, но это - неизбежно часть глубокой инфраструктуры кода ExtJS, который мы используем, и я не могу сказать, где это находится в моей стопке кода.
Способ видеть стек вызовов работал бы, но предпочтительно я хотел бы смочь просто ворваться в отладчик, когда я получаю длинный сценарий, предупреждающий, таким образом, я могу просто ступить через стек.
Существует подобный отправленный вопрос, но данные ответы были для not-the-right-tool или не ужасно полезного совета устранить половину моего кода за один раз двоичного поиска на бесконечный цикл. Если мой код был достаточно прост, что я мог сделать это, это, вероятно, не будет получать бесконечный цикл во-первых. Если бы я мог бы воспроизвести проблему в Firebug, я, вероятно, был бы намного более счастливым также.
Я уже сталкивался с этим раньше, и мне повезло с включением инструментов разработчика вместе с Visual Studio. При обнаружении ошибки загрузка страницы останавливается, и я мог затем загрузить Visual Studio, чтобы увидеть конкретную строку, вызывающую проблему.
На этом сайте есть некоторая информация об использовании Visual Studio вместе с отладчиком Internet Explorer: Использование Visual Studio для отладки JavaScript в IE
Вот что я бы сделал:
Перейдите на http://www.microsoft.com/whdc/devtools/debugging/default .mspx и установите средства отладки для Windows. Вы хотите запустить WinDBG, когда он будет установлен.
Выполните действия, описанные на http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx#a , чтобы настроить соединение с сервером символов и автоматически загрузить символы на ваш локальный компьютер. диск (c: \ websymbols - или что угодно).
Запустите IEXPLORE.EXE под WinDBG. В этом случае вам поможет файл справки. Вам понадобится пара команд, как только вы запустите Internet Explorer и тому подобное. Во-первых, приступайте к работе над большим скриптом.
Взломать отладчик (CTRL-SCROLLLOCK для прерывания).
а. Выполните LN
, чтобы «перечислить ближайшие», чтобы получить загруженные файлы DLL. Надеюсь, у вас в памяти загружен файл JSCRIPT.DLL.
б. Введите .reload / f
, чтобы принудительно перезагрузить все символы. Это займет некоторое время. Теперь, когда это будет сделано, снова введите LN
, и вы должны увидеть, что в вашу систему загружен соответствующий файл JSCRIPT.PDB в каталог символов, который вы установили ранее.
В зависимости от того, что вы хотите сделать, вам может потребоваться перезапустить отладчик, но вы можете сделать это: После первоначального перерыва при загрузке WINDBG вы можете ввести «sxe ld jscript.dll ", и он сломается при загрузке jscript.dll
.
Это сложная часть, потому что после загрузки у вас не будет кода для jscript.dll
, но у вас есть подходящие символы (если они не загружены, перезагрузите их с помощью .reload / f
). Вы можете просмотреть доступные функции, набрав «x! jscript», и вы получите полный список всех функций и переменных.
Выберите одну, установите точку останова, и тогда вы сможете отслеживать, что происходит с вашим скриптом.
Если ничего другого не происходит, используйте . reload / f process
, вы можете получить соответствующие файлы jscript.pdb
, загруженные в вашу систему. Возможно, вы могли бы использовать их вместе с Visual Studio для выполнения дополнительной отладки таким образом, но я ' m не уверен, насколько хорошо это сработает.