IE挂起,使用100%的CPU

时间:2009-02-22 05:49:42

标签: ajax internet-explorer internet-explorer-7 internet-explorer-6

我有一个Web应用程序,它在正常交互过程中挂起IE。通过“IE挂起”,我的意思是IE不再响应并使用100%的CPU。唯一能摆脱这种状态的是杀死IE进程。关于应用程序:

  • 它只在浏览器中加载一个页面,与具有Ajax查询的服务器通信,并更新DOM。
  • 我可以使用IE6和IE7重现这一点,但不能使用Firefox或Safari。

我想知道是否有人已经看过这个,如果有一些已知的情况可以让IE进入挂起/使用100%的CPU状态。

3 个答案:

答案 0 :(得分:6)

使用WinDbg,http://www.microsoft.com/whdc/devtools/debugging/

将其附加到有问题的IE进程。

.symfix +命令将您的符号路径设置为指向Microsoft符号服务器并在本地缓存调试符号。

!runaway命令将枚举过程中的所有堆栈并告诉您哪一个堆栈正在疯狂。

如果你很幸运,你可能会看到一些可识别的东西,例如堆栈顶部的正则表达式替换。或者布局引擎可能已进入无限循环。这些都发生在我身上。

如果callstack没有意义,请使用'g'进行处理,等待几秒钟,按Ctrl + Break,再尝试!再次失控。

在本地获得符号后,您还可以使用SysInternals的Process Explorer查看进程的堆栈。在Process Explorer中配置Symbols选项以指向本地符号缓存,例如c:\ Program Files \ Debugging Tools for Windows \ sym。

答案 1 :(得分:1)

尝试附加脚本调试器(在我的情况下通过Visual Studio),并查看导致它的原因。

很可能是一个运行无限循环的javascript,或者只是为了根据ajax请求需要完成的循环过快。

答案 2 :(得分:0)

您是否尝试过跟踪问题?如果问题也发生在IE8中,您可以使用console.log命令及其内置的令人敬畏的新调试器/开发工具。否则使用旧的开发工具栏进行IE或警报。尝试减少问题,然后提交错误(并在此处粘贴代码)。