Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Пт Май 22, 2015 10:01  отладка |
|
Полезность: Нет оценки
|
Здравствуйте, ув.знатоки.
Вопрос такой возник: реально ли написать процедурку отладки, которая будет выводить Класс, метод, номер строки (plp или plpsql кода), имя переменной (если она дебажится) и ее значение?
в дистрибутиве есть аналог, только без строки. Интересно можно ли именно строку получить? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Пт Май 22, 2015 11:41   |
|
Полезность: 2
|
каг то таг, например
Код: |
s varchar(32000);
begin
s:= ' превед! ';
begin
pragma error('s='||s);
exception
when others then
null;
debug_pipe('ОШИБКА: '||SQLERRM || dbms_utility.format_error_backtrace,0);
end;
debug_pipe(' выполняемся дальше ',0);
end;
|
11:38:19 ОШИБКА: ORA-20300: APP-PR_CRED.VT_TEST: s= превед!ORA-06512: на "IBS.MESSAGE", line 50
ORA-06512: на "IBS.Z$PR_CRED_VT_TEST", line 41
выполняемся дальше |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Пт Май 22, 2015 13:27   |
|
Полезность: Нет оценки
|
не понял.. это прагма передает управление в исключение чтоли? разве прагма не прерывает исполнение пакета? |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Пт Май 22, 2015 13:33   |
|
Полезность: Нет оценки
|
wolfio пишет: | не понял.. это прагма передает управление в исключение чтоли? разве прагма не прерывает исполнение пакета? |
Прагма ERROR вставляет в код операции вызов функции MESSAGE.APP_ERROR для вывода сообщения об ошибке с дополнительным указанием её короткого имени и ТБП в качестве кода
ошибки. |
|
 |
Матвеев Евгений Профи
Вступление в Клуб: 31.01.2012
|
Пт Май 22, 2015 13:38   |
|
Полезность: Нет оценки
|
wolfio пишет: | не понял.. это прагма передает управление в исключение чтоли? разве прагма не прерывает исполнение пакета? |
Судя по логу как раз так и происходит...
то есть
1. передает управление в исключение,
2. выводит сообщение,
3. далее корректно продолжает исполнение кода |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Пт Май 22, 2015 14:24   |
|
Полезность: Нет оценки
|
да, я со второго прочтения осознал что тут написано
способ интересный, но много мусора, особенно, если поставить такой "дебаг" в стек нескольких операций.
может быть есть какие-нибудь другие варианты, как получить номер строки? |
|
 |
Gobur Профи
Вступление в Клуб: 06.11.2012
|
Сб Май 23, 2015 10:30   |
|
Полезность: Нет оценки
|
wolfio пишет: | да, я со второго прочтения осознал что тут написано
способ интересный, но много мусора, особенно, если поставить такой "дебаг" в стек нескольких операций.
может быть есть какие-нибудь другие варианты, как получить номер строки? |
У ЦФТ другой подход - на ключевых строках операции просто добавляют вывод отладочных сообщений и применяют мехнизм включения и выключения отладки. А пистаь универсально что то для любой операции большого смысла нет. В любом случае не получится такого отладчика, когда исполняемый код на стороне клиента.
Для оракловых пакетов думаю это нормальных способ отладится, другое дело, что универсализма нет, но и отладка только на момент внедрения операции требуется , как правило. |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|