Bonjour,
Voici mon problème :
J'ai intégré à notre application un système permettant de récupérer la pile d'appels lorsqu'une exception a lieu. Ce système s'appuie que la lib "FastMM4" et sur la redéfinition du pointeur "System.RaiseExceptionProc".
Cela fonctionne généralement très bien sauf dans certains cas ou alors qu'une exception a lieu (par exemple "violation d'accès") la fonction "System.RaiseExceptionProc" n'est pas appelée.
J'ai essayé de comprendre en déboguant via l'IDE Delphi mais là problème ça marche normalement.
En résumé :
- Dans la majorité des cas "System.RaiseExceptionProc" est toujours appelé (en mode "debug" via Delphi et lors d'une lancement "standalone").
- Dans certains cas (je n'arrive pas à savoir lesquels précisément) "System.RaiseExceptionProc" n'est appelé qu'en mode "debug" via Delphi.
Dans mon cas de figure le problème se pose sur un gestionnaire "OnTimer", un code incorrect génère une violation d'acces qui déclenche une exception "EAccessViolation" sans appeler "System.RaiseExceptionProc" (sauf si en mode debug via l'IDE). Je précise que si je créé une exception "explicitement" avec un "raise Exception.Create(...);" dans ce même gestionnaire "OnTimer" alors "System.RaiseExceptionProc" est bien appelé.
Avez-vous une idée de la cause de ce comportement ?
Merci pour votre aide.
Partager