No, you cannot hook the termination of your own process. If you could, then a malicious (or just buggy) program could hook it an then refuse to follow through with the termination. It's different for a debugger because the debugger is a separate program.
Were I writing your program, I'd just put my reporting code in the finalization
section of the relevant unit. The Delphi RTL will call it as the program shuts down, generally in reverse order that the units were initialized in, which again is generally the order in which units were used. Use your analysis unit early in the program, and it will get finalized late in the termination sequence, allowing you to capture as much data as possible.