![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Exceptions и имя функции [D5]
yaric © (2003-01-12 17:37:00)Возникла такая ситуация нужно вести лог ошибок системы
желательно туда писать название функции где произошла ошибка
и значения ее параметров при этом возможно ли такое
Игорь Шевченко (2003-01-20 17:53:00) [1]
> Как получить адрес ошибки?
Какой вопрос, такой ответ.
Все-таки, покопай в сторону JCL, вроде и ссылку дали...
yaric (2003-01-20 17:40:00) [2]ExceptAddr - возвращает адрес инструкции, которая привела к исключению, а как получить хотябы имя функции(проц.), в которой произошло исключения, не говоря уже о номере строки в коде.
Игорь Шевченко (2003-01-20 14:36:00) [3]ExceptAddr - надо help почаще читать
yaric (2003-01-20 14:20:00) [4]Ну помогите же кто-нибудь...
yaric (2003-01-17 15:00:00) [5]Как получить адрес ошибки?
DarkGreen (2003-01-15 05:05:00) [6]MAP файл + адрес ошибки, будет тебе и имя функции и строка в исходнике. И ни какой отладочной информации не нужно.
vuk (2003-01-14 17:32:00) [7]Там в примерах есть StackTrackExample.dpr Как раз именно обработка исключений с выдачей трассировки стека.
yaric (2003-01-14 16:33:00) [8]>>vuk
В принципе можно использовать средства трассировки стека из JCL http://sourceforge.net/projects/jcl/
Только вот имена процедур можно получить только при включении в exe отладочной информации TD32 (галочка в настройках линкера).
если можна то поподробнее как это можно сделать с помощью JCL
vuk (2003-01-13 22:56:00) [9]В принципе можно использовать средства трассировки стека из JCL http://sourceforge.net/projects/jcl/
Только вот имена процедур можно получить только при включении в exe отладочной информации TD32 (галочка в настройках линкера).
gsu (2003-01-13 21:46:00) [10]эээ, точно на то он и TTCustomDelphiMaster, но я про название и параметры и не спорю - хороший подход, просто я ответил на вопрос: "А если я хочу обрабатывать автоматически например в TCustomApplicationEvents.OnException как мне біть в єтом случае"
Моджахед (2003-01-13 21:39:00) [11]2 gsu ©
Сорри, но человеку нужно было:
вести лог ошибок системы
желательно туда писать название функциигде произошла ошибка
TTCustomDelphiMaster на то и намекал, что (общеизвестно) на этапе выполнения никаких имен функций нет, и их нужно прописывать самому в своих ексепшинах.
gsu (2003-01-13 20:22:00) [12]procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
Caption:=e.Message;
лог или обработка
Abort;
end;
Моджахед (2003-01-13 20:21:00) [13]Assert, но лога не выйдет ;-)
yaric (2003-01-13 20:06:00) [14]А если я хочу обрабатывать автоматически например в
TCustomApplicationEvents.OnException как мне біть в єтом случае
TTCustomDelphiMaster (2003-01-12 22:32:00) [15]Возможно, но лучше писать без ошибок.
Все защищенные функции должны выглядеть так
function SafeDiv(a, b: double): Result;
begin
try
Result := a/b;
except
WriteErrorLog("SafeDiv", a, b); //Тут можно по разному передавать переменные, по лучше их не приводить в текстовый формат, а писать в Hex значение байтов которые им пренадлежат.
end;
end;