在Toad中调试PLSQL

在Toad中调试PLSQL,plsql,toad,Plsql,Toad,我一直在使用PL/SQL为Oracle db创建软件包,我正在尝试找到一种不用“put_line”命令调试PL/SQL软件包的好方法,有没有人能提供一些关于如何在Toad或SQLPlus上成功调试PL/SQL软件包的好方法?根据Toad的版本,图标和工具栏看起来会有所不同,但过程是一样的: 确保“使用调试切换编译”选项已打开 点击“编译”按钮 A.设置断点 单击“使用调试器执行PLSQL” 蟾蜍9.7: 蟾蜍11.6: 首先,为了能够调试PL/SQL代码,必须具有适当的数据库权限进行调试。(将

我一直在使用PL/SQL为Oracle db创建软件包,我正在尝试找到一种不用“put_line”命令调试PL/SQL软件包的好方法,有没有人能提供一些关于如何在Toad或SQLPlus上成功调试PL/SQL软件包的好方法?

根据Toad的版本,图标和工具栏看起来会有所不同,但过程是一样的:

  • 确保“使用调试切换编译”选项已打开
  • 点击“编译”按钮 A.设置断点
  • 单击“使用调试器执行PLSQL”
  • 蟾蜍9.7:

    蟾蜍11.6:


    首先,为了能够调试PL/SQL代码,必须具有适当的数据库权限进行调试。(
    将调试连接会话授予用户
    )。如果您未被授予此权限,您的DB工具(如Quest TOAD)甚至可能不会显示调试选项,或者可能会显示它已禁用

    第二,在调试之前,必须对代码(过程、函数或包)进行预编译以进行调试。当使用调试选项编译代码时,编译器会向编译后的代码中插入额外的数据,以便在调试过程中在断点处停止。(使用
    切换使用调试编译
    打开调试选项并编译代码)在调试完成开发阶段后,应在不使用调试选项的情况下重新编译代码(关闭
    切换使用调试编译
    并编译代码)

    然后,您应该在代码中插入调试断点,并在执行期间监视要在调试器中跟踪的(变量)

    最后,您应该用debug开始您的代码,执行将在第一个断点处停止,并使用debug工具栏,您可以单步执行、单步执行、运行到游标。。。在你的代码中


    要启用调试,请授予以下权限并重新打开TOAD。这对我总是有用的

        GRANT ALTER SESSION TO <databaseUser>;
        GRANT CREATE SESSION TO <databaseUser>;
        GRANT EXECUTE ON DBMS_DEBUG to <databaseUser>;
        GRANT ALTER ANY PROCEDURE TO <databaseUser>;
        GRANT CREATE ANY PROCEDURE TO <databaseUser>;
        GRANT DEBUG ANY PROCEDURE TO <databaseUser>;
        GRANT DEBUG CONNECT SESSION TO <databaseUser>;
    
    将ALTER会话授予;
    授予创建会话的权限;
    授予在DBMS_调试上执行的权限;
    允许更改任何程序;
    允许创建任何程序;
    允许调试任何程序;
    授予调试连接会话;
    
    您看过蟾蜍的内置文档了吗?(帮助->索引->关键字“调试”)@sharkbait您需要被授予允许调试的数据库权限。确切的权限取决于Oracle版本。是否可以在TOAD中保存一组断点供以后使用?我是说。。。每次我重新启动它时,我都会丢失它们,并且在某个包中可能有一大组断点。此外,即使我尝试不关闭程序,它也经常崩溃,每次我都必须重置它们,丢失我的“战略性”位置和一些有条件的位置…如何禁用包调试?没有方法/按钮来禁用它。@meadlai我上面的屏幕截图此时可能有点过时,可能图标已更改,但上面我突出显示并标记了调试按钮“1”-当突出显示该按钮时,表示它处于活动状态并已被单击,再次单击它将取消选择并关闭该选项。单击按钮将其关闭后,您需要重新编译包以使更改生效。我错过了一个按钮,无法继续执行直到下一个断点。在使用“runtocursor”选项时,必须手动将光标放在下一行,我希望调试器停止,这非常烦人。另外,我不太明白“跨越”功能是如何工作的。关于这些有什么提示吗?哦,对不起-我自己回答。我刚刚发现我需要使用“带调试器执行PL/SQL”来恢复执行。。。哦!