Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hooking a Stacktrace in Delphi 2009

The Exception class in Delphi 2009 received a number of new features. A number of them are related to getting a stacktrace:

  • property StackTrace: string read GetStackTrace;
  • property StackInfo: Pointer read FStackInfo;
  • class var GetExceptionStackInfoProc: function (P: PExceptionRecord): Pointer;
  • class var GetStackInfoStringProc: function (Info: Pointer): string;
  • class var CleanUpStackInfoProc: procedure (Info: Pointer);

Has anyone used these to obtain a stack trace yet? Yeah, I know there are other ways to get a stack trace, but if it is supported natively in the Exception class I would rather leverage that.

Update: There is an interest blog post about this. Covers it in a lot of depth.

like image 227
Jim McKeeth Avatar asked Nov 13 '08 09:11

Jim McKeeth


4 Answers

To me this looks like a framework where you can plug in your own stack tracing. I guess this might be used internally in the IDE with JCLDebug. Perhaps it's intended for users to be able to supply madExcept or another implementation.

like image 80
Ondrej Kelle Avatar answered Nov 05 '22 13:11

Ondrej Kelle


No, I haven't used them yet (currently using madExcept for that, and also did some experiments with JclDebug) - but thanks for the tip!

like image 30
PatrickvL Avatar answered Nov 05 '22 13:11

PatrickvL


TOndrej is correct. The new features added to Exception class are for third-parties to hook their own stack tracing code into the RTL. The default implementation of the Exception class does not produce its own stack traces.

like image 2
Remy Lebeau Avatar answered Nov 05 '22 12:11

Remy Lebeau


You would be well advised to look at MadExcept. Not only does it provide excellent handling of any unhandled exceptions (screen grab, email etc) but it has a nice set of callable routines to hand you back a stack trace that you can use almost anywhere. Bri

like image 2
Brian Frost Avatar answered Nov 05 '22 12:11

Brian Frost