xe2 versiones que para full embarcadero creadores delphi exception ide delphi-2009

versiones - Excepción externa EEFFACE en Delphi



que es delphi 2010 (5)

Al depurar mi aplicación con Delphi 2009, a veces se produce la siguiente excepción:

¿Que es esto? http://www.beholdgenealogy.com/img/ideexception.gif

Esto solo ocurre ocasionalmente, pero después de presionar OK, entonces mi IDE y el programa se pueden congelar. Si tengo suerte, a veces puedo hacer un archivo / guardar todo en Delphi, pero a veces no puedo. De cualquier manera, estoy atascado y lo único que puedo hacer es usar el Administrador de tareas de Windows para cerrar Delphi. Por supuesto, si no pude Guardar Todo, entonces pierdo todas las ediciones que había hecho desde el último guardado.

Tengo todas las actualizaciones de Delphi 2009 instaladas hasta e incluyendo la Actualización 4. También tengo instalado el IDE Fix Pack 2009 2.9.

El error está atrapado para mí por EurekaLog, y el informe de errores proporciona la siguiente pila de llamadas:

Call Stack Information: ----------------------------------------------------------------------------------------------------------- |Address |Module |Unit |Class |Procedure/Method |Line | ----------------------------------------------------------------------------------------------------------- |Running Thread: ID=5068; Priority=0; Class=; [Main] | |---------------------------------------------------------------------------------------------------------| |205669C6|dbkdebugide120.bpl |Debug.pas |TDebugger |DBKWndProc |11598[6] | |777DE49A|ntdll.dll | | |KiUserExceptionDispatcher | | |7705E0CB|kernel32.dll | | |RaiseException | | |03E8E3E8|dcc120.dll |WRITEOBJ.OBJ | |C62_0 | | |03E3066D|dcc120.dll |SYMTAB.OBJ | |MakeOverloadedPropertyList| | |03E3064C|dcc120.dll |SYMTAB.OBJ | |MakeOverloadedPropertyList| | |03E30D76|dcc120.dll |SYMTAB.OBJ | |EnterMethod | | |03E30D6C|dcc120.dll |SYMTAB.OBJ | |FindBaseClassMethod | | |03DE8D30|dcc120.dll |DECL.OBJ | |PatchConstRecordParameter | | |777DE590|ntdll.dll | | |RtlLeaveCriticalSection | | |03DBBF70|dcc120.dll |BROWCMGR.OBJ | |PutToAddress | | |03DBC436|dcc120.dll |BROWCMGR.OBJ | |GetNearestSymName | | |777DE550|ntdll.dll | | |RtlEnterCriticalSection | | |219C5BDA|win32debugide120.bpl|Win32Debug.pas |TWin32LinkUnit |GetCppDebugHook |1923[3] | |219C5BB8|win32debugide120.bpl|Win32Debug.pas |TWin32LinkUnit |GetCppDebugHook |1920[0] | |219C644E|win32debugide120.bpl|Win32Debug.pas |TWin32Process |DoLinkUnitCreated |2198[10] | |50001CE4|rtl120.bpl |System.pas | |InterlockedIncrement |3200[0] | |5000CD59|rtl120.bpl |System.pas |TInterfacedObject |_AddRef |21759[1] | |2055F40F|dbkdebugide120.bpl |Debug.pas |TProcess |LinkUnitCreated |8454[1] | |2055F408|dbkdebugide120.bpl |Debug.pas |TProcess |LinkUnitCreated |8453[0] | |2055CEC7|dbkdebugide120.bpl |Debug.pas |TEvaluatorCallback|ntfyLinkUnitDelta |7167[7] | |77050DF0|kernel32.dll | | |VirtualProtect | | |50003FE4|rtl120.bpl |System.pas | |_ReallocMem |3512[0] | |500093F6|rtl120.bpl |System.pas | |_LStrSetLength |15889[38]| |50004508|rtl120.bpl |System.pas | |Move |4414[0] | |5001DDB9|rtl120.bpl |SysUtils.pas | |StrLCopy |7852[5] | |5007E559|rtl120.bpl |UxTheme.pas | |DrawThemeTextEx |5226[2] | |5007E524|rtl120.bpl |UxTheme.pas | |DrawThemeTextEx |5224[0] | |2110A98D|vclactnband120.bpl |ThemedActnCtrls.pas|TThemedMenuButton |DoDrawText |488[23] | |50009E88|rtl120.bpl |System.pas | |_UStrClr |16961[0] | |2110A9A2|vclactnband120.bpl |ThemedActnCtrls.pas|TThemedMenuButton |DoDrawText |490[25] | |75FC7BFE|USER32.dll | | |CallNextHookEx | | |20AA9C5E|designide120.bpl |DeskUtil.pas | |SetFocusHook |435[4] | |210E8B83|vclactnband120.bpl |ActnMenus.pas | |CallWindowHook |741[20] | |50057F7D|rtl120.bpl |Classes.pas |TComponent |UpdateAction |11881[1] | |50006EE4|rtl120.bpl |System.pas | |_CallDynaInst |10209[0] | |501EA802|vcl120.bpl |Forms.pas | |ProcessUpdate |6739[1] | |50006F3C|rtl120.bpl |System.pas |TObject |InheritsFrom |10281[0] | |50006E1A|rtl120.bpl |System.pas | |_IsClass |10107[1] | |50006E0C|rtl120.bpl |System.pas | |_IsClass |10106[0] | |501EA870|vcl120.bpl |Forms.pas | |TraverseClients3 |6756[5] | |501EA818|vcl120.bpl |Forms.pas | |TraverseClients3 |6751[0] | |501EA88A|vcl120.bpl |Forms.pas | |TraverseClients3 |6756[5] | |50047748|rtl120.bpl |Classes.pas |TList |Get |3366[0] | |501C865E|vcl120.bpl |Controls.pas |TWinControl |GetControl |8473[4] | |50006F3C|rtl120.bpl |System.pas |TObject |InheritsFrom |10281[0] | |50006E1A|rtl120.bpl |System.pas | |_IsClass |10107[1] | |501C8668|vcl120.bpl |Controls.pas |TWinControl |GetControlCount |8478[0] | |501EA87B|vcl120.bpl |Forms.pas | |TraverseClients3 |6756[5] | |501EA818|vcl120.bpl |Forms.pas | |TraverseClients3 |6751[0] | |501EA8E2|vcl120.bpl |Forms.pas |TCustomForm |CMActionUpdate |6778[11] | |501C565A|vcl120.bpl |Controls.pas |TControl |WndProc |6642[91] | |501C5388|vcl120.bpl |Controls.pas |TControl |WndProc |6551[0] | |501C9CE7|vcl120.bpl |Controls.pas |TWinControl |WndProc |9336[136]| |75FC7C2B|USER32.dll | | |CallNextHookEx | | |75FCC477|USER32.dll | | |InvalidateRect | | |75FCC41E|USER32.dll | | |InvalidateRect | | |75FCC49D|USER32.dll | | |CallWindowProcW | | |75FCC487|USER32.dll | | |CallWindowProcW | | |205669A5|dbkdebugide120.bpl |Debug.pas |TDebugger |DBKWndProc |11595[3] | |500591DC|rtl120.bpl |Classes.pas | |StdWndProc |12703[8] | |75FC9467|USER32.dll | | |IsWindowVisible | | |75FC8B0B|USER32.dll | | |DispatchMessageW | | |75FC8B01|USER32.dll | | |DispatchMessageW | | |501EEABD|vcl120.bpl |Forms.pas |TApplication |ProcessMessage |9660[30] | |501EE9A0|vcl120.bpl |Forms.pas |TApplication |ProcessMessage |9630[0] | |501EEB02|vcl120.bpl |Forms.pas |TApplication |HandleMessage |9690[1] | |501EEAF8|vcl120.bpl |Forms.pas |TApplication |HandleMessage |9689[0] | |501EEE2D|vcl120.bpl |Forms.pas |TApplication |Run |9827[26] | |501EED64|vcl120.bpl |Forms.pas |TApplication |Run |9801[0] | |004259E6|bds.exe |bds.dpr | |bds |198[8] | |770CECC9|kernel32.dll | | |BaseThreadInitThunk | | -----------------------------------------------------------------------------------------------------------

Como puede ver, toda la pila de llamadas está en Delphi y Windows. No se conecta en absoluto a ninguna línea en mi programa.

He consultado la página web: External Exception EEFFACE y la traduje del alemán al inglés, pero parece estar hablando de Delphi C ++ mientras que no uso C ++ en absoluto.

Mi problema es que no tengo idea de qué podría estar causando esto, ya que no ocurre de manera consistente. No tengo ni idea de dónde buscar para encontrarlo o cómo rastrearlo.

¿Alguien sabe qué es esto y cómo puedo rastrearlo o al menos evitar que suceda?

Alex de EurekaLog publicó esto en respuesta a mi consulta en su foro :

Creo que puede ser un error en el depurador de Delphi. Posiblemente relacionado con información sobre herramientas de evaluación o algo similar.

Compruébelo usted mismo: tenemos una excepción de C ++ en el módulo del sistema (EEFFACE es un código especial para la excepción VCL. Cuando VCL encuentra una excepción de C ++ desconocida, la envuelve en el objeto EExternalException con el código = EEFFACE) y la pila de llamadas incluye las unidades del depurador de Delphi:

|205669C6|dbkdebugide120.bpl |Debug.pas |TDebugger |DBKWndProc |11598[6] | |7705E0CB|kernel32.dll | | |RaiseException | | |03E8E3E8|dcc120.dll |WRITEOBJ.OBJ | |C62_0 | | |03E3066D|dcc120.dll |SYMTAB.OBJ | |MakeOverloadedPropertyList| | |03E3064C|dcc120.dll |SYMTAB.OBJ | |MakeOverloadedPropertyList| | |03E30D76|dcc120.dll |SYMTAB.OBJ | |EnterMethod | | |03E30D6C|dcc120.dll |SYMTAB.OBJ | |FindBaseClassMethod | | |03DE8D30|dcc120.dll |DECL.OBJ | |PatchConstRecordParameter | | |03DBBF70|dcc120.dll |BROWCMGR.OBJ | |PutToAddress | | |03DBC436|dcc120.dll |BROWCMGR.OBJ | |GetNearestSymName | | |219C5BDA|win32debugide120.bpl|Win32Debug.pas |TWin32LinkUnit |GetCppDebugHook |1923[3] | |219C5BB8|win32debugide120.bpl|Win32Debug.pas |TWin32LinkUnit |GetCppDebugHook |1920[0] | |219C644E|win32debugide120.bpl|Win32Debug.pas |TWin32Process |DoLinkUnitCreated |2198[10] | |50001CE4|rtl120.bpl |System.pas | |InterlockedIncrement |3200[0] | |5000CD59|rtl120.bpl |System.pas |TInterfacedObject |_AddRef |21759[1] | |2055F40F|dbkdebugide120.bpl |Debug.pas |TProcess |LinkUnitCreated |8454[1] | |2055F408|dbkdebugide120.bpl |Debug.pas |TProcess |LinkUnitCreated |8453[0] | |2055CEC7|dbkdebugide120.bpl |Debug.pas |TEvaluatorCallback|ntfyLinkUnitDelta |7167[7] |

Creo que deberías publicar esta descripción en la Central de Calidad de Embarcadero.

Intente deshabilitar la casilla de verificación "Integración de IDE" (se encuentra en el menú "EurekaLog" / "Opciones de EurekaLog IDE" de IDE) y ejecute su aplicación, verifique si habrá un cambio en el comportamiento.

Ahora he enviado un informe a Quality Central en:

http://qc.embarcadero.com/wc/qcmain.aspx?d=81881

Esperemos que con esta información, Embarcadero pueda evitar esto en futuras versiones.

Vuelvo a esta pregunta más de 4 años después, y me doy cuenta de que hace unos meses encontré la solución, así que la estoy publicando aquí para cualquier persona que pueda encontrarla.

El problema y la solución se proporcionaron en el blog de Olaf Monien , en una publicación de 2009/07/22 titulada Delphi 2009 / Windows 7/64 bit Debugger Crash Workaround.

Las instrucciones de Olaf en ese post funcionaron perfectamente para mí, y el problema desapareció. Le agradecí en un comentario en su blog.

Como @rossmcm señala en su comentario, la publicación del blog de Olaf ya no está allí, pero la publicación todavía se puede encontrar en el Archivo de Internet . En su lugar, consulte la información de Chris Miller sobre el problema, que incluye un enlace a la herramienta de parches que ahora tiene un hogar permanente en Embarcadero .


Esta no es una respuesta exacta, pero puede ayudarlo a superar el error al describir mi experiencia con él.

Recibí este error regularmente cuando fui a Windows Vista y 7. El mismo código nunca recibió ese mensaje de error en Windows XP. Pude poner un punto de ruptura en la primera línea del archivo dpr y descubrí que siempre parecía ocurrir al crear la pantalla de inicio para mis aplicaciones. Intenté varias otras formas de hacer pantallas de inicio, pero siempre resultaban en un error de EEFFACE al depurar.

Así que para superar este problema, ahora pongo

if DebugHook = 0 then

Cuando creo y accedo a la pantalla de bienvenida. La pantalla de inicio de mis aplicaciones no aparece ahora cuando estoy depurando, pero al menos ya no recibo ese error EEFFACE.


Esto es claramente algo que sucede en el evaluador de Delphi (que es parte del compilador). Lo extraño es que si, de hecho, está pasando por writeobj.c, algo no está del todo bien. Si puede reproducirlo con un caso de prueba, repórtelo en QualityCentral ( http://qc.embarcadero.com ).

EEFFACE es el código de excepción SEH utilizado por C ++, que se "filtra" a algún código Delphi (en este caso, el propio IDE). Cuando el código de excepción no es una excepción generada por Delphi o una excepción relacionada con el hardware, Delphi simplemente lo asigna a la excepción EExternalException.


He estado luchando con EEFFACE durante semanas. Finalmente encontré que la causa fue esta instrucción:

PDFForgePDF.CopyPDFFile(pdffile,pdfcreatorfile,1,1);

Los contenidos de las variables pdffile y pdfcreatorfile fueron los mismos ....

Tal vez esto pueda ayudar a alguien tan pobre como yo ...


Parece que la "excepción externa" no es un error de Delphi, tuve esta excepción hace un tiempo y probablemente fue un problema con la placa base, o con el hardware, porque el programa funcionó bien en otra máquina.


Recientemente me he encontrado con esto y de alguna manera está relacionado con el IDE de Delphi. El siguiente código termina en esta excepción en la línea ShellExecute:

url:=''https://translate.google.com/#hu/en/%C3%A1''; ShellExecute(0,PChar(''open''),PChar(url),nil,nil,SW_SHOWNORMAL);

Pero esto no es:

url:=''https://translate.google.com/#hu/en/%C3%A1''; ShowMessage(url); ShellExecute(0,PChar(''open''),PChar(url),nil,nil,SW_SHOWNORMAL);

Pero si ejecuto mi aplicación fuera de IDE, todo está bien sin la línea extra de ShowMessage. No sé si ayuda, pero tal vez en otros casos donde se necesita depuración, quizás este "truco" pueda ayudar.

Sistema: DELL Optiplex, Intel Core2Duo, Win7 x64, Delphi 7