Display the call stack in a Delphi Win32 application

delphi, error-handling

Solution

madExcept has a method StackTrace (in unit madStackTrace) that does that.

JEDI Code Library offers similar functionality in unit JclDebug.

Problem

I'd like to display a stack trace in an error dialog in Delphi 2007 (Win32). Ideally, I'd like something like this: ``` try //do something except on e : exception do begin //rollback a transaction or whatever i need to do here MessageDlg('An error has occurred!' + #13#10 + e.Message + #13#10 + 'Here is the stack trace:' + #13#10 + e.StackTrace,mtError,[mbOK],0); end; //except end; /try-except ``` And for the output to be like the Call Stack in the IDE: ``` MYPROGRAM.SomeFunction MYPROGRAM.SomeProcedure MYPROGRAM.MYPROGRAM :7c817067 kernel32.RegisterWaitForInputIdle + 0x49 ```

Original source