Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c