Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.30;
Скачать: CL | DM;

Вниз

Exceptions и имя функции   Найти похожие ветки 

 
yaric   (2003-01-12 17:37) [0]

Возникла такая ситуация нужно вести лог ошибок системы
желательно туда писать название функции где произошла ошибка
и значения ее параметров при этом возможно ли такое


 
TTCustomDelphiMaster ©   (2003-01-12 22:32) [1]

Возможно, но лучше писать без ошибок.
Все защищенные функции должны выглядеть так
function SafeDiv(a, b: double): Result;
begin
try
Result := a/b;
except
WriteErrorLog("SafeDiv", a, b); //Тут можно по разному передавать переменные, по лучше их не приводить в текстовый формат, а писать в Hex значение байтов которые им пренадлежат.
end;
end;


 
yaric   (2003-01-13 20:06) [2]

А если я хочу обрабатывать автоматически например в
TCustomApplicationEvents.OnException как мне біть в єтом случае


 
Моджахед   (2003-01-13 20:21) [3]

Assert, но лога не выйдет ;-)


 
gsu ©   (2003-01-13 20:22) [4]

procedure TForm1.ApplicationEvents1Exception(Sender: TObject;
E: Exception);
begin
Caption:=e.Message;
лог или обработка
Abort;
end;


 
Моджахед   (2003-01-13 21:39) [5]

2 gsu ©
Сорри, но человеку нужно было:

вести лог ошибок системы
желательно туда писать название функции где произошла ошибка



TTCustomDelphiMaster на то и намекал, что (общеизвестно) на этапе выполнения никаких имен функций нет, и их нужно прописывать самому в своих ексепшинах.



 
gsu ©   (2003-01-13 21:46) [6]

эээ, точно на то он и TTCustomDelphiMaster, но я про название и параметры и не спорю - хороший подход, просто я ответил на вопрос: "А если я хочу обрабатывать автоматически например в TCustomApplicationEvents.OnException как мне біть в єтом случае"


 
vuk ©   (2003-01-13 22:56) [7]

В принципе можно использовать средства трассировки стека из JCL http://sourceforge.net/projects/jcl/
Только вот имена процедур можно получить только при включении в exe отладочной информации TD32 (галочка в настройках линкера).


 
yaric   (2003-01-14 16:33) [8]

>>vuk

В принципе можно использовать средства трассировки стека из JCL http://sourceforge.net/projects/jcl/
Только вот имена процедур можно получить только при включении в exe отладочной информации TD32 (галочка в настройках линкера).



если можна то поподробнее как это можно сделать с помощью JCL


 
vuk ©   (2003-01-14 17:32) [9]

Там в примерах есть StackTrackExample.dpr Как раз именно обработка исключений с выдачей трассировки стека.


 
DarkGreen ©   (2003-01-15 05:05) [10]

MAP файл + адрес ошибки, будет тебе и имя функции и строка в исходнике. И ни какой отладочной информации не нужно.


 
yaric   (2003-01-17 15:00) [11]

Как получить адрес ошибки?


 
yaric   (2003-01-20 14:20) [12]

Ну помогите же кто-нибудь...


 
Игорь Шевченко ©   (2003-01-20 14:36) [13]

ExceptAddr - надо help почаще читать


 
yaric   (2003-01-20 17:40) [14]

ExceptAddr - возвращает адрес инструкции, которая привела к исключению, а как получить хотябы имя функции(проц.), в которой произошло исключения, не говоря уже о номере строки в коде.


 
Игорь Шевченко ©   (2003-01-20 17:53) [15]


> Как получить адрес ошибки?


Какой вопрос, такой ответ.

Все-таки, покопай в сторону JCL, вроде и ссылку дали...



Страницы: 1 вся ветка

Текущий архив: 2003.01.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-96609
Roma111
2003-01-10 11:08
2003.01.30
Выделить год


1-96684
BofA
2003-01-21 19:16
2003.01.30
Как правильно рисовать на Canvas е у TImage?


6-96917
zitrol
2002-11-20 00:05
2003.01.30
Вывести ip на экран!


1-96728
EXE
2003-01-22 12:31
2003.01.30
Выделение строки в StringGrid - е


14-96943
cc43294
2003-01-11 15:27
2003.01.30
Не в тему