если я не ошибаюсь, для перехвата исключений есть глобальная переменная:
ExceptProc : TExceptProc
утилиты для просмотра стека:
для FPC
Procedure Dump_Stack(var f : text;bp:pointer);
в качестве bp, узатель из функции get_frame
- Код: Выделить всё
Dump_Stack(output, get_frame());
procedure DumpExceptionBackTrace(var f:text);
для Lazarus-а
в модуле LCLProc:
procedure DumpExceptionBackTrace;
procedure DumpStack;
function GetStackTrace(UseCache: boolean): string;
procedure GetStackTracePointers(var AStack: TStackTracePointers);
если они не устраивают, то можно использовать реализацию этих функций.