O Internet Explorer 8 tem melhorias e novas funcionalidades. Entre elas está o LCIE (Loosely Coupled Internet Explorer).
Essencialmente o LCIE é um conjunto de mudanças internas na arquitectura do Internet Explorer 8 que têm com objectivo melhorar a performance, escalabilidade e robustez do browser.
Entre essas melhorias está uma em especial, que trouxe alguns problemas inesperados aos programadores que utilizam o Visual Studio 2005 juntamente o com Internet Explorer 8.
No IE7 cada janela do browser (UI Frame) tem o seu processo, todos os novos separadores e controlos ActiveX estavam residem nesse processo. O problema com este modelo é, quando um separador provoca um “access violation” ou “stack overflow”, o processo é terminado, logo todos os separadores que estão no mesmo UI Frame vão ser terminados.
Para isso não acontecer no IE8, cada separador tem um processo próprio, assim quando existe um erro provocado por um separador, apenas o processo do separador é terminado, não o processo da janela do browser.
Na imagem apresentada, o browser tem três separadores abertos, o que no IE7 se irá traduzir num único processo, mas no IE8 se vai traduzir em 4 processos como se pode verificar na imagem em baixo.
Um dos processos é do UI Frame e os restantes três pertencem cada um a cada um dos separadores activos na janela do browser.
É sem dúvida uma excelente melhoria face à versão anterior do browser, no entanto surgiram alguns problemas aos programadores no momento que estes fazem o debug de aplicações web com o Visual Studio 2005 e IE8.
O que acontece é que se, ao executar o debug da aplicação já existir um processo com o Internet Explorer a ser executado, o debugger do Visual Studio para e ignora os “break points” porque não encontra qual o processo do Internet Explorer que está a ser depurado.
Para resolver esta situação é necessário desabilitar a funcionalidade “grouwth” do LCIE.
Os passos são os seguintes:
1 – Abrir o RegEdit
2- Percorer HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer –> Main
3 – Adicionar uma DWORD com o nome “TabProcGrowth”
4 – Colocar no valor de “TabProcGrowth” 0
Fontes:
http://blogs.msdn.com/ie/archive/2008/03/11/ie8-and-loosely-coupled-ie-lcie.aspx
http://weblogs.asp.net/abdullaabdelhaq/archive/2009/06/01/VS-Debug-Problem-with-IE8.aspx