CftClub.ru
Клуб специалистов ЦФТ-Банк

отладка

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
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    Ответить с цитатой
Полезность: Нет оценки
да, я со второго прочтения осознал что тут написано Smile
способ интересный, но много мусора, особенно, если поставить такой "дебаг" в стек нескольких операций.

может быть есть какие-нибудь другие варианты, как получить номер строки?
Gobur
Профи


Вступление в Клуб: 06.11.2012
СообщениеСб Май 23, 2015 10:30    Ответить с цитатой
Полезность: Нет оценки
wolfio пишет:
да, я со второго прочтения осознал что тут написано Smile
способ интересный, но много мусора, особенно, если поставить такой "дебаг" в стек нескольких операций.

может быть есть какие-нибудь другие варианты, как получить номер строки?


У ЦФТ другой подход - на ключевых строках операции просто добавляют вывод отладочных сообщений и применяют мехнизм включения и выключения отладки. А пистаь универсально что то для любой операции большого смысла нет. В любом случае не получится такого отладчика, когда исполняемый код на стороне клиента.
Для оракловых пакетов думаю это нормальных способ отладится, другое дело, что универсализма нет, но и отладка только на момент внедрения операции требуется , как правило.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru