我有一个Web应用程序,它在正常交互过程中挂起IE.通过"IE挂起",我的意思是IE不再响应并使用100%的CPU.唯一能摆脱这种状态的是杀死IE进程.关于应用程序:
它只在浏览器中加载一个页面,与具有Ajax查询的服务器通信,并更新DOM.
我可以使用IE6和IE7重现这一点,但不能使用Firefox或Safari.
我想知道是否有人已经看过这个,如果有一些已知的情况可以让IE进入这个挂起/使用100%的CPU状态.
使用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.