Lors du débogage mon application avec Delphi 2009, je reçois parfois l'exception suivante se produit:Exception externe EEFFACE dans Delphi
What is this? http://www.beholdgenealogy.com/img/ideexception.gif
Cela ne se produit que de temps en temps, mais après avoir appuyé sur OK, puis mon IDE et un programme à la fois peut gel. Si j'ai de la chance je peux parfois faire un fichier/SaveAll dans Delphi, mais parfois je ne peux pas. De toute façon je suis bloqué et puis la seule chose que je peux faire est d'utiliser le Gestionnaire des tâches de Windows pour fermer Delphi. Bien sûr, si je ne pouvais pas enregistrer, alors je perdais toutes les modifications que j'avais faites depuis la dernière sauvegarde.
Toutes les mises à jour de Delphi 2009 sont installées jusqu'à la mise à jour 4 incluse. J'ai également installé IDE Fix Pack 2009 2.9.
L'erreur me est pris au piège par EurekaLog, et le rapport d'erreur donne la pile d'appel suivant:
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 | |
-----------------------------------------------------------------------------------------------------------
Comme vous pouvez le voir, tous de la pile d'appels est en Delphi et Windows. Il ne se connecte pas du tout à une ligne de mon programme.
J'ai regardé la page Web: External Exception EEFFACE et l'ai traduit de l'allemand vers l'anglais, mais il semble parler de Delphi C++ alors que je n'utilise pas C++ du tout.
Mon problème est que je n'ai aucune idée de ce qui pourrait être à l'origine de ce problème, car cela n'arrive pas systématiquement. Je n'ai aucune idée même où chercher pour le trouver ou comment le traquer.
Est-ce que quelqu'un sait ce que c'est et comment je peux le traquer ou au moins l'empêcher de se produire?
Alex de EurekaLog a publié ce billet en réponse à my query on their forum:
Je pense qu'il peut être un bogue dans le débogueur de Delphi . Peut-être lié à info-bulles d'évaluation ou quelque chose de similaire .
Voyez vous-même - nous avons un module exception du système C++ (EEFFACE est un code spécial pour exception VCL Lorsque VCL rencontre une inconnue exception C++ -. Il encapsule dans objet EExternalException avec le code = EEFFACE) et la pile d'appels comprend les unités de débogueur 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] |
Je pense que vous devez envoyer ce description de la qualité d'Embarcadero Central.
Essayez de désactiver « l'intégration IDE » case (il est situé dans « EurekaLog » de l'EDI/« Options EurekaLog IDE menu » ) et exécutez votre application - voir s'il y aura un changement de comportement.
J'ai maintenant soumis un rapport au Centre Qualité:
http://qc.embarcadero.com/wc/qcmain.aspx?d=81881
Espérons que cette information, Embarcadero sera en mesure d'empêcher cela dans les versions ultérieures.
Je reviens à cette question plus de 4 ans plus tard, et se rendre compte qu'il ya quelques mois, j'ai trouvé la solution, donc je suis annonce ici pour quelqu'un d'autre qui peut rencontrer ce.
Le problème et la solution ont été fournis dans le blog de Olaf Monien, dans un article du 22/07/2009 intitulé Delphi 2009/Windows 7/64 bit Debugger Crash Workaround.
Les instructions d'Olaf sur ce poste ont parfaitement fonctionné pour moi, et le problème est parti. Je l'ai remercié dans un commentaire sur son blog. Comme @rossmcm le fait remarquer dans son commentaire, le blog d'Olaf n'est plus là, mais the post can still be found on the Internet Archive. Au lieu de cela, consultez Chris Miller's information about the problem qui comprend un lien vers the patch tool that now has a permanent home at Embarcadero.
Vous peut installer DDevExtensions de Andreas Hausladen. Il a une option pour sauvegarder vos fichiers après une compilation réussie. Il ne va pas corriger cette erreur bien sûr, mais au moins vous ne perdez pas vos données. –
FWIW, mon article est également disponible en anglais: http://www.audacia-software.de/en/bcb/external-exception-eefface.htm Vous auriez pu trouver cela en cliquant simplement sur le petit drapeau britannique à gauche :) –
@Moritz: Merci pour le lien en anglais. Je ne sais pas comment j'ai raté ton petit drapeau. Mais avez-vous des idées sur ce qui pourrait m'arriver? – lkessler