3

У меня есть веб-приложение, которое в процессе нормального взаимодействия зависает IE. «IE висит», я имею в виду, что IE больше не отвечает и использует 100% CPU. Единственный выход из этого состояния - убить IE-процесс. О приложении:IE висит, используя 100% CPU

  • Он загружает только одну страницу в браузере, общается с сервером с помощью запросов Ajax и обновляет DOM.
  • Я могу воспроизвести это как с IE6, так и с IE7, но не с Firefox или Safari.

Мне интересно, видел ли кто-нибудь это уже, и если есть несколько известных случаев, которые могут получить IE в этом висели/используя 100% состояния процессора.

+0

Привет, доступна ли эта страница в Интернете, чтобы посмотреть? thanks –

+0

К сожалению, это приложение, которое было создано для клиента и которое не является общедоступным. – avernet

+0

Может быть, вы сможете разместить текст HTML/JavaScript на странице? Кроме того, можете ли вы предоставить нам информацию об использовании памяти на этой странице? Это высоко? Он поднимается? – BobbyShaftoe

ответ

0

Вы пытались выяснить проблему? Если проблема также возникает в IE8, вы можете использовать команды console.log и их потрясающий новый инструмент отладчика/dev, который встроен. В противном случае используйте старую панель инструментов Dev для IE или оповещений. Попытайтесь уменьшить проблему, а затем зарегистрируйте ошибку (и вставьте сюда код здесь).

+0

Код был посыпан console.log(), но это не помогло. У меня также есть трассировки стека, которые вы можете увидеть здесь: http://stackoverflow.com/questions/576349/ie-hanging-with-100-cpu-got-stack-trace – avernet

1

Попробуйте подключить отладчик сценариев (через Visual Studio, в моем случае) и посмотреть, что вызывает его.

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

+0

Но если это то, что происходит, t IE предлагает прекратить выполнение скрипта через определенное количество времени? По крайней мере, я привык видеть это сообщение в IE, когда пишу бесконечный цикл. Существуют ли случаи, когда IE не может обнаружить скрипт, работающий в течение длительного времени? – avernet

+0

@ Алессандро-Верне, эта ошибка возникает только в ситуациях. Вы правы, это может быть полезно, но есть большой класс ситуаций, которые могут возникать там, где вы не получите это сообщение. – BobbyShaftoe

+0

@BobbyShaftoe Интересно, я не знал, что бесконечные петли могут заставить IE зависнуть. Спасибо за эту информацию. Я попытаюсь следовать советам другого пользователя, который предложил мне проверить это с помощью IE8 и использовать инструменты IE8 для его отладки. – avernet

6

Использование WinDbg, http://www.microsoft.com/whdc/devtools/debugging/

Прикрепите его к процессу IE, который имеет проблемы.

Команда .symfix + установит ваш путь символа на сервер символов Microsoft и будет кэшировать символы отладки локально.

Команда runaway будет перечислять все стеки в процессе и сообщать вам, какой из них идет в ярость.

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

Если callstack не имеет смысла, используйте 'g', чтобы сделать процесс, подождите несколько секунд, нажмите Ctrl + Break, затем попробуйте снова убежать.

Как только вы получили символы локально, вы также можете использовать Process Explorer для SysInternals для просмотра стеков процессов. Настройте параметр «Символы» в Process Explorer, чтобы указать на ваш локальный кеш символов, например, c: \ Program Files \ Debugging Tools для Windows \ sym.

+0

@George V. Reilly, This это отличный совет. Я определенно должен попробовать это. – avernet

+0

@George V. Reilly, BTW, вы покупаете на картинке этого сайта Microsoft, которого вы рекомендовали? ;) – avernet

+0

Хех. Неа. Но я один из пастообразных белых парней с бородами и очками на обложке «Beginning ATL COM Programming». –