Есть ли в Firebird детальная функция отладки?

Я хотел отладить выполнение процедуры. За этой процедурой стоит несколько триггеров и транзакций. В рамках этой процедуры обновляется один набор данных, который ведет себя иначе, чем все остальные наборы данных. Поэтому я хотел отладить подробно.

Я уже пытался отладить с помощью обычного отладчика процедур, но он просто отлаживает на поверхности, поэтому он отлаживает только эту процедуру и не переходит во все таблицы/процедуры/триггеры, которые включены в это выполнение.

Я также пытался использовать функцию трассировки и аудита, но это слишком запутанно и показывает мне слишком много информации, которая мне не нужна.

В основном мне нужно знать, есть ли возможность подробной отладки, как в других IDE, например, в Eclipse.


person ebug38    schedule 11.04.2019    source источник
comment
На сервере Firebird вообще нет отладки PSQL. Даже то, что вы называете обычным отладчиком процедур, на самом деле является имитацией IBExpert. Процедура не выполнялась, вместо этого IBExpert выдавал одну команду за другой, делая вид, что запускает процедуру (на самом деле это не так)   -  person Arioch 'The    schedule 11.04.2019
comment
@Arioch'Я думал, что это на самом деле происходит внутри хранимой процедуры. Спасибо за эту информацию.   -  person Ed Mendez    schedule 12.04.2019
comment
@EdMendez Я помню, как в некоторых крайних случаях я видел обсуждения о том, что симуляция несколько отличается от собственного исполнения Firebird, чего и следовало ожидать. Симуляция никогда не бывает идеальной на 100% и, кроме того, может иметь собственные ошибки.   -  person Arioch 'The    schedule 12.04.2019
comment
@Arioch'The Итак, возможно ли просто смоделировать эту конкретную процедуру, не переключаясь на другие процедуры / триггеры и т. Д. Во время выполнения? Вау, это раздражает. Спасибо за ответы!   -  person ebug38    schedule 12.04.2019


Ответы (2)


Вероятно, это не тот ответ, который вы ищете, но он работал у меня в прошлом.

Что я сделал вместо отладки для сбора статистики времени выполнения и потока, так это следующее.

В Firebird 2.5 у вас есть автономные транзакции. У меня есть хранимая процедура, которая принимает описание контекста и сообщение. Внутри SP я вставляю контекст, сообщение и метку времени в таблицу Firebird, предназначенную для регистрации. Я заключаю этот оператор вставки в IN AUTONOMOUS TRANSACTION. Эта транзакция немедленно зафиксирует эту транзакцию и позволит мне видеть строки в этой таблице во время выполнения процедуры.

Вы можете зафиксировать прошедшее время или другую статистику. Недостатком этого способа является то, что вам нужно будет обновить хранимые процедуры и триггеры, из которых вы хотите получить информацию, поэтому в производственной системе это может быть запрещено.

person Ed Mendez    schedule 12.04.2019
comment
Да, это может быть вариантом. Даже если это очень дорого, это может сработать. - person ebug38; 12.04.2019

Firebird не имеет функции отладки для хранимых процедур (кроме того, что предоставляет трассировка). Как указано в комментариях Arioch ', функция отладки IBExpert имитирует выполнение хранимой процедуры, но фактически не выполняет ее на сервере.

person Community    schedule 12.04.2019