更新时间:2022-12-08 GMT+08:00

控制执行

本节包含如下内容:

开始调试

在“对象浏览器”窗格中选择需调试的函数。单击工具栏中的(或使用前文提到的其他方法)开始调试。如果没有设置断点,或者设置的断点无效,则不会停止任何语句、进行调试操作,而仅会执行对象并显示结果(如有)。

单步调试PL/SQL函数

调试执行函数时,用户可使用工具栏中的单步调试命令。通过进行单步控制,可逐行调试程序。如果进行单步操作时遇到断点,则该单步操作会停止,程序也会暂停执行。

“单步”是指一次执行一条语句。单步执行一条语句后,可以在其他调试窗口中查看执行结果。

一次最多可以弹出100个“PL/SQL Viewer”页签。如果打开的页签超过100个,则调用函数页签关闭。例如,如果已打开100个页签,且调试对象调用了新调试对象,则Data Studio会关闭调用函数并打开新的调试对象。

单步进入

在选择“调试”菜单中选择单步进入、按或者按F7,都可以逐条语句执行代码。

当单步跳入一个函数,Data Studio执行当前语句,然后进入调试模式,调试位置由左侧标尺区域中的箭头表示。如果执行语句调用另一个函数,Data Studio将单步跳入该函数。一旦函数中的所有语句执行完成,Data Studio将跳回其调用函数的下一语句。

单步进入(F7),进入下一语句如果按“继续”,PL/SQL代码执行将继续。

例如:

跳入第8行时,进入m := F3_TEST();,即进入f3_test()中的第9行。持续单步进入(F7),进入每一行,从而执行f3_test()中的所有语句。一旦该函数中的所有语句执行完毕,Data Studio跳回f2_test()中的第10行。

以函数名为标题的页签中,当前调试对象用星号(*)标记。

单步跳过

单步跳过与单步进入相同,除非调用了另一个函数,否则不会跳入该函数。该函数将运行,进入当前函数中的下一个语句。F8是单步跳过的快捷键。如果该调用函数内设置了断点,单步跳过将进入该函数,并命中该断点。

下面的例子中,如在第10行单击“单步跳过”,Data Studio将运行f3_test()进程。

光标移动到f2_test()中的下一语句,即f2_test()中的第11行。

用户熟悉了该函数的工作方式,并确保函数的执行不会影响正在调查的问题后,可以单步跳过该函数。

同单步进入该行一样,单步跳过不包含函数调用的一行代码执行该行。

单步退出

子程序单步退出,继续该函数的执行,在该过程返回其调用函数后,暂停执行,确定该函数的剩余部分无需调试后,可单步退出该段函数。然而,如果该函数其余部分设置了断点,在返回调用函数前,该断点将被命中。

单步跳过和单步退出过程都会执行函数。单步退出操作的快捷键是“Shift+F7”。

上图所示例子中,

  • 选择“调试 > 单步进入”单步进入f3_test()。
  • 选择“调试 > 单步退出”单步退出f3_test()。

继续执行

调试进程在某一位置停止时,可在“调试”菜单中选择“继续”(F9)或者单击工具栏中的继续PL/SQL函数执行。

查看调用堆栈

调用堆栈”窗格展示调用过程时的过程链。可从最小化窗口窗格中打开“调用堆栈”窗格。最近的过程在顶部,最早的在底部,每个程序名的末尾是该过程的当前行号。

双击“调用堆栈”窗格中的函数名,通过“调用堆栈”窗格在多个函数中导航。例如,当f2_test()调用f3_test()的第10行时,调试指针将指向调用函数中的首个可执行行(即上一个例子中的第9行)。

这种情况下,“调用堆栈”窗格如下图所示:

按下“Alt+J”复制“调用堆栈”窗格内容。