Firebird 有详细的调试功能吗?

Is there a detailed debug feature in Firebird?

我想调试程序的执行。这个过程的背后有几个触发器和事务。在此过程中更新了一个数据集,其行为不同于所有其他数据集。所以想详细调试一下。

我已经尝试使用正常的过程调试器进行调试,但是那只是表面上的调试,所以它只调试这个过程,并没有跳转到这次执行中包含的所有表/过程/触发器。

我也尝试过使用跟踪和审计功能,但这太混乱了,它显示了太多我不需要的信息。

基本上我需要知道是否有可能像在其他 IDE(例如 Eclipse)中那样进行详细调试。

Firebird 没有针对存储过程的调试功能(trace 提供的功能除外)。正如 Arioch 的评论中所指出的,IBExpert 的调试功能模拟存储过程的执行,它实际上并没有在服务器上单步执行它。

这可能不是您正在寻找的答案,但过去对我有用。

下面是我代替调试来捕获 运行 时间统计数据和流程的方法。

在 Firebird 2.5 中你有 autonomous transactions。我有一个存储过程,它接受上下文描述和消息。在 SP 中,我将上下文和消息以及时间戳插入到被认为用于记录的 Firebird table 中。我将该插入语句包装在“IN AUTONOMOUS TRANSACTION”中。此事务将立即提交该事务,并允许我在执行过程时看到 table 中的行。

您可以捕获经过的时间或其他统计信息。这样做的缺点是您需要更新您想要从中获取信息的存储过程和触发器,因此在生产系统中这可能是不允许的。