Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо