Как узнать строку и модуль в которых возникла ошибка?

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

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

Ответить
Аватара пользователя
EmeraldMan
постоялец
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород
Контактная информация:

Как узнать строку и модуль в которых возникла ошибка?

Сообщение EmeraldMan »

Например, есть большой программный блок в try..except. При возникновении ошибки, её текст записывается в файл, выполнение продолжается дальше. Есть ли вообще способ узнать где именно возникла ошибка? При отладке проблем нет, интересует именно в рабочем варианте.
Mirage
энтузиаст
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia
Контактная информация:

Сообщение Mirage »

Нужно узнать где произошла ошибка при записи её в файл? Т.е. имея на руках только что выброшенное исключение?
Писал себе такой модуль, когда хотел сделать чтобы были стектрейсы как в Java.
https://github.com/casteng/base/blob/dev/BaseDebug.pas
Думаю, в данном случае подойдет функция GetExceptionStackTrace() из него.
В FPC, насколько помню, работает без сторонних либ, вроде JCLDebug, только генерацию дебажной инфы надо включить.
Аватара пользователя
EmeraldMan
постоялец
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород
Контактная информация:

Сообщение EmeraldMan »

Как раз то, что нужно, спасибо большое!
По названиям применяемых в функции GetExceptionStackTrace() объектов нашел ещё вики страничку по данной теме:
http://wiki.lazarus.freepascal.org/Logging_exceptions
Взял от туда DumpExceptionCallStack(E: Exception), немного переделал для своих целей.
Можно сказать, что в своих основах функции GetExceptionStackTrace() и DumpExceptionCallStack(E: Exception) одинаковы.
Ответить