I am using Delphi TApplication.OnException Event to catch unhandled exceptions
This works well but does not give sufficient information about where the exception hap
You can get the memory address where the exception was thrown by using the ExceptAddr variable (System unit). But if you want a stack trace you could use one of the 3rdParty tools MadExcept, EurekaLog or the open source JCLDebug (part of the JCL).