Доброго!
Платформа Windows, приложение - служба.
Для отлова ошибок использую блоки try except end - как узнать номер строки с ошибкой?
Возможно ли это?
(Пока сделал так, вставил в текст программы переменную которой присваиваю GUID и потом вывожу эту переменную в лог, и могу понять где возникла ошибка. Нет ли способа проще? Т.к. этот доп код сильно ухудшает читаемость исходного кода.)
try except end - как узнать номер строки с ошибкой?
Модератор: Модераторы
Может это в свойствах проекта ?


Это все стоит, и во время отладки в IDE работает.
Я говорю про то как узнать номер строки где возникла ошибка когда приложение работает без IDE (у клиента) и этот номер строки вывести в лог.
Я говорю про то как узнать номер строки где возникла ошибка когда приложение работает без IDE (у клиента) и этот номер строки вывести в лог.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Проще всего из обработчика исключения вызвать
запишет в файл стек вызовов, приведший к исключению.
Код: Выделить всё
DumpExceptionBacktrace(LogFile);
запишет в файл стек вызовов, приведший к исключению.
Пишет в лог примерно такое:
$0A21FDA4
$0046300F
$0045C0A3
$00547B44
$00538FD4
$0053857E
$00436058
Как с этим работать дальше?
И после вызова начинает грузить процессор под 100%.
$0A21FDA4
$0046300F
$0045C0A3
$00547B44
$00538FD4
$0053857E
$00436058
Как с этим работать дальше?
И после вызова начинает грузить процессор под 100%.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Если собрано с ключом -gl, то должны выводиться номера строк и имена функций. Хотя смотря что за исключение. Для самостоятельно брошенных исключений обычно работает. Для всяких EAccessViolation - как повезет. В данном случае первый адрес явно не из программы, попытка получить для него информацию может поставить код из модуля lineinfo в такую позу, из которой он уже не выйдет.
Да, с некоторыми исключениями только адреса, а с некоторыми полная выкладка - модуль, строка и др.
Почему вот только после вызова DumpExceptionBacktrace(LogFile); программа начинает загружать процессор на 100%?
Добавлено спустя 27 минут 5 секунд:
Насчет загрузки проца на 100% это у меня косяк.
Почему вот только после вызова DumpExceptionBacktrace(LogFile); программа начинает загружать процессор на 100%?
Добавлено спустя 27 минут 5 секунд:
Насчет загрузки проца на 100% это у меня косяк.
