![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отловить причину закрытия программы? [D7, XP, 2003]
SkyN © (2009-08-24 13:54:00)Программа просто выгружается из памяти.
Application.OnException для данной ошибки не записывает в лог ничего.
По всей видимости, ошибка происходит не в основном потоке.
В событиях windows для приложений вижу: "Ошибка приложения project1.exe, версия 0.0.0.0, модуль project1.exe, версия 0.0.0.0, адрес 0x0007752c."
Как найти строку кода, в которой происходит ошибка?
SkyN (2009-08-24 14:35:00) [1]спасибо!
Сергей М. (2009-08-24 14:27:00) [2]
> Этого не достаточно?
Конечно нет.
Это перехват исключений основного потока.
> Куда копать?
procedure TMyThread.Execute;
begin
try
...
except
on e:Exception do ..
end;
end;
SkyN (2009-08-24 14:15:00) [3]
MyException = class
class procedure ErrorCatch(Sender : TObject; Exc : Exception);
end;
class procedure MyException.ErrorCatch(Sender : TObject; Exc : Exception);
begin
try
Error('Exception: ClassName='+Exc.ClassName + ' Message='+Exc.Message + ' Sender='+sender.ClassName);
except
end;
end;
процедура Error - пишет в лог-файл данную строку. Работает исправно, проверенно многократно :)
clickmaker (2009-08-24 14:10:00) [4]> MyException.ErrorCatch
а что это?
SkyN (2009-08-24 14:05:00) [5]
> Что мешает контролировать исключения не только в основном,
> но и в дополнительных потоках ?
Куда копать?
Сейчас юзаюApplication.OnException := MyException.ErrorCatch;. Этого не достаточно?
Сергей М. (2009-08-24 14:01:00) [6]
> ошибка происходит не в основном потоке
Что мешает контролировать исключения не только в основном, но и в дополнительных потоках ?
SkyN (2009-08-24 13:59:00) [7]> запустить под отладчиком?
ошибка плавающая, происходит у конечных пользователей, я пока воспроизвести её не смог
clickmaker (2009-08-24 13:57:00) [8]> Как найти строку кода, в которой происходит ошибка?
запустить под отладчиком?