FPC и Call Stack

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

FPC и Call Stack

Сообщение vay » 23.09.2009 09:51:15

Всем доброго дня. Никто не сможет посоветовать метод глобального перехвата exception в приложении? То есть - возник exception в коде, я его в нужном мне месте обработал (вывел в лог), и вернул управление туда, куда бы оно и пришло без моего вмешательства. Ибо для Delphi такую возможность имею, а при сборке под FPC оказалось, что сущность RTLUnwindProc: Pointer; в нем не существует :(

Вот и думаю, куда бы подцепиться в приложении free pascal чтобы получать уведомления о возникших exception для их логирования.
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46

Re: FPC и Call Stack

Сообщение скалогрыз » 23.09.2009 10:01:27

если я не ошибаюсь, для перехвата исключений есть глобальная переменная:
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);

если они не устраивают, то можно использовать реализацию этих функций.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: FPC и Call Stack

Сообщение vay » 23.09.2009 10:30:05

спасибо. поэкспериментирую
vay
новенький
 
Сообщения: 22
Зарегистрирован: 06.07.2009 17:56:46


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru