Не работает отладка анонимных блоков

Обсуждение возникших проблем, предложений и ошибок dbForge for Oracle
Закрыто
ZVanoZ
Сообщения: 79
Зарегистрирован: Чт 18 ноя 2010 16:50

Не работает отладка анонимных блоков

Сообщение ZVanoZ » Пт 20 дек 2013 11:09

Версия: 3.5.272

Код: Выделить всё

declare
  n number := 0;
begin
  n := n + 1;
  dbms_output.put_line('n='||n);
  n := n + 1;
  dbms_output.put_line('n='||n);
  n := n + 1;
  dbms_output.put_line('n='||n);
  n := n + 1;
  dbms_output.put_line('n='||n);
end;
1. Размещаем курсор в любой строке анонимного блока.
2. Жмем "CTRL+F10" (Выполнить до курсора).
Открывается новая пустая вкладка и ничего не происходит.
На панели активна кнопка "Прервать отладку".

Лог отладки:

Код: Выделить всё

-- 12:07:20 --
BEGIN
  SELECT 1
  INTO :Result
  FROM All_Objects
  WHERE
    Owner='SYS' and
    Object_Name='DBMS_DEBUG' and
    Object_Type='PACKAGE';
exception
  when Others then
    :Result:= 0;
END;
Параметры:
	Result: 
Время выполнения: 0,0155931828085264 секунд

-- 12:07:21 --
BEGIN
  DBMS_OUTPUT.ENABLE(:BUFFER_SIZE);
END;
Параметры:
	BUFFER_SIZE: 20000
Время выполнения: 0,0153482526232343 секунд

-- 12:07:21 --
ALTER SESSION SET PLSQL_DEBUG = True
Время выполнения: 0,0145948921971006 секунд

-- 12:07:21 --
DECLARE t INTEGER; BEGIN :Debug_Session_ID := DBMS_DEBUG.Initialize(NULL, 0); t := DBMS_DEBUG.SET_TIMEOUT(:timeout); DBMS_DEBUG.SET_TIMEOUT_BEHAVIOUR(DBMS_DEBUG.abort_on_timeout); END;
Параметры:
	Debug_Session_ID: 
	timeout: 9999
Время выполнения: 0,0161416343214746 секунд

-- 12:07:21 --
BEGIN DBMS_DEBUG.Debug_On; END;
Время выполнения: 0,0149838989619763 секунд

-- 12:07:21 --
BEGIN DBMS_DEBUG.Attach_Session(:Debug_Session_ID, 0); END;
Параметры:
	Debug_Session_ID: 04A78FC30001
Время выполнения: 0,0157731184479174 секунд

-- 12:07:22 --
BEGIN :timeout := DBMS_DEBUG.SET_TIMEOUT(:timeout); END;
Параметры:
	timeout: 9999
Время выполнения: 0,0178910441677961 секунд

-- 12:07:22 --
declare
  n number := 0;
begin
  n := n + 1;
  dbms_output.put_line('n='||n);
  n := n + 1;
  dbms_output.put_line('n='||n);
  n := n + 1;
  dbms_output.put_line('n='||n);
  n := n + 1;
  dbms_output.put_line('n='||n);
end;
Время выполнения: 0,0349839693994152 секунд

-- 12:07:22 --
DECLARE PI DBMS_DEBUG.Program_Info;
 BEGIN PI.Name := :UnitName;
 PI.Owner := :UnitOwner;
 PI.Namespace := :NameSpace;
 PI.LibunitType := :LibunitType;
 PI.DbLink := '';
 :Status := DBMS_DEBUG.Set_Breakpoint(PI, :LineNo, :BreakpointNo); END;
Параметры:
	UnitName: tst$pkg
	UnitOwner: PROTOTYPE
	NameSpace: PkgBody
	LibunitType: PackageBody
	Status: 
	LineNo: 1572
	BreakpointNo: 
Время выполнения: 0,0155765339593301 секунд

-- 12:07:23 --
DECLARE PI DBMS_DEBUG.Program_Info;
 BEGIN PI.Name := :UnitName;
 PI.Owner := :UnitOwner;
 PI.Namespace := :NameSpace;
 PI.LibunitType := :LibunitType;
 PI.DbLink := '';
 :Status := DBMS_DEBUG.Set_Breakpoint(PI, :LineNo, :BreakpointNo); END;
Параметры:
	UnitName: 
	UnitOwner: 
	NameSpace: Cursor
	LibunitType: Cursor
	Status: 0
	LineNo: 5
	BreakpointNo: 0
Время выполнения: 0,0228357523791045 секунд

-- 12:07:23 --
DECLARE PI DBMS_DEBUG.Program_Info;
 BEGIN PI.Name := :UnitName;
 PI.Owner := :UnitOwner;
 PI.Namespace := :NameSpace;
 PI.LibunitType := :LibunitType;
 PI.DbLink := '';
 :Status := DBMS_DEBUG.Set_Breakpoint(PI, :LineNo, :BreakpointNo); END;
Параметры:
	UnitName: 
	UnitOwner: 
	NameSpace: Cursor
	LibunitType: Cursor
	Status: 0
	LineNo: 4
	BreakpointNo: 0
Время выполнения: 0,015481123246628 секунд

-- 12:07:23 --
DECLARE PI DBMS_DEBUG.Program_Info;
 BEGIN PI.Name := :UnitName;
 PI.Owner := :UnitOwner;
 PI.Namespace := :NameSpace;
 PI.LibunitType := :LibunitType;
 PI.DbLink := '';
 :Status := DBMS_DEBUG.Set_Breakpoint(PI, :LineNo, :BreakpointNo); END;
Параметры:
	UnitName: 
	UnitOwner: 
	NameSpace: Cursor
	LibunitType: Cursor
	Status: 0
	LineNo: 5
	BreakpointNo: 0
Время выполнения: 0,016379200592699 секунд

-- 12:07:23 --
DECLARE
          RI DBMS_DEBUG.Runtime_Info;
        BEGIN
          :Status:= DBMS_DEBUG.Continue(RI, :BreakFlags, 14);
          :Line             := RI.Line#;
          :Terminated       := RI.Terminated;
          :Breakpoint       := RI.Breakpoint;
          :StackDepth       := RI.StackDepth;
          :InterpreterDepth := RI.InterpreterDepth;
          :Reason           := RI.Reason;
          :LibunitType      := RI.Program.LibunitType;
          :NameSpace        := RI.Program.NameSpace;
          :Name             := RI.Program.Name;
          :Owner            := RI.Program.Owner;
          :DBLink           := RI.Program.DBLink; 
          :EntrypointName   := RI.Program.EntrypointName;
        END;
Параметры:
	Status: 
	BreakFlags: 46
	Line: 
	Terminated: 
	Breakpoint: 
	StackDepth: 
	InterpreterDepth: 
	Reason: 
	LibunitType: 
	NameSpace: 
	Name: 
	Owner: 
	DBLink: 
	EntrypointName: 
Время выполнения: 0,017732880100431 секунд

-- 12:07:23 --
DECLARE
          RI DBMS_DEBUG.Runtime_Info;
        BEGIN
          :Status:= DBMS_DEBUG.Continue(RI, :BreakFlags, 14);
          :Line             := RI.Line#;
          :Terminated       := RI.Terminated;
          :Breakpoint       := RI.Breakpoint;
          :StackDepth       := RI.StackDepth;
          :InterpreterDepth := RI.InterpreterDepth;
          :Reason           := RI.Reason;
          :LibunitType      := RI.Program.LibunitType;
          :NameSpace        := RI.Program.NameSpace;
          :Name             := RI.Program.Name;
          :Owner            := RI.Program.Owner;
          :DBLink           := RI.Program.DBLink; 
          :EntrypointName   := RI.Program.EntrypointName;
        END;
Параметры:
	Status: 0
	BreakFlags: 2
	Line: 0
	Terminated: 0
	Breakpoint: 0
	StackDepth: 0
	InterpreterDepth: 0
	Reason: 0
	LibunitType: 0
	NameSpace: 0
	Name: 
	Owner: 
	DBLink: 
	EntrypointName: 
Время выполнения: 0,05096046122435 секунд

-- 12:07:23 --
DECLARE
	BackTrace DBMS_DEBUG.backtrace_table;
	i INTEGER;
BEGIN
	DBMS_DEBUG.Print_BackTrace(BackTrace);
	for i in BackTrace.FIRST .. BackTrace.LAST
	loop
		:Name(i) := BackTrace(i).Name;
		:Owner(i) := BackTrace(i).Owner;
		:NameSpace(i) := BackTrace(i).NameSpace;
		:Line(i) := BackTrace(i).Line#;
		:LibunitType(i) := BackTrace(i).LibunitType;
	end loop;
END;
Параметры:
	Name: System.String[]
	Owner: System.String[]
	NameSpace: System.Int32[]
	Line: System.Int32[]
	LibunitType: System.Int32[]
Время выполнения: 0,029997318894939 секунд

-- 12:07:23 --
BEGIN :Status := DBMS_DEBUG.Delete_Breakpoint(:BreakpointNo); END;
Параметры:
	Status: 
	BreakpointNo: 4
Время выполнения: 0,0154628735465475 секунд

Если учесть, что вызов функции с параметром-массивом можно выполнить только из анонимного блока, то бага серьезная. Прийдется снести эту версию и поставить старую :(

Alexander

Re: Не работает отладка анонимных блоков

Сообщение Alexander » Пт 20 дек 2013 12:14

Мы исправим данную проблему в одной из следующих сборок продукта.

Alexander

Re: Не работает отладка анонимных блоков

Сообщение Alexander » Ср 05 мар 2014 18:49

Хотим сообщить Вам, что вышла новая сборка 3.5.322 продукта dbForge Studio for Oracle, в которой данная проблема устранена http://www.devart.com/ru/dbforge/oracle ... nload.html

Благодарим Вас за Вашу помощь в усовершенствовании dbForge Studio for Oracle.

Закрыто