调试器
调试器¶
该调试器可用于调试SeaboxSQL中的PL/pgSQL函数以及EDB SeaboxSQL Advanced Server中的EDB-SPL函数,存储过程和程序包。调试器可作为SeaboxSQL安装的扩展程序提供,并作为Advanced Server的一部分分发。您必须具有超级用户特权才能使用调试器。
使用调试器之前,必须修改seaboxsql.conf文件,将服务器端调试器组件添加到shared_preload_libraries参数的值中,例如:
shared_preload_libraries ='$ libdir/plugin_debugger'
修改shared_preload_libraries参数后,重新启动服务器以应用更改。
调试器可用于目标功能或过程的上下文调试或直接调试。使用调试器进行上下文调试时,请在程序的第一行设置一个断点。当会话调用目标时,控制权将转移到调试器。使用直接调试时,调试器会提示您输入目标所需的任何参数,然后允许您单步执行代码。
上下文中调试¶
要在程序的第一行设置断点,请右键单击要调试的对象的名称,然后从“调试”子菜单中选择“设置断点”。调试器窗口将打开,等待另一个会话来调用程序。
当另一个会话调用目标时,调试器将显示代码,允许您添加断点或逐行浏览。另一个会话被挂起,直到调试完成。然后控制权返回到会话。
直接调试¶
要将调试器用于直接调试,请在sdAdmin树控件中右键单击要调试的对象的名称,然后从“调试”子菜单中选择“调试”。调试器窗口将打开,提示您输入程序所需的任何值:
使用“调试器”对话框上的字段为每个参数提供一个值:
-
名称字段包含形式参数名称。
-
“类型”字段包含参数数据类型。
-
检查Null?复选框,以指示该参数为NULL值。
-
检查表达式?如果“值”字段包含表达式,则选中该复选框。
-
使用“值”字段提供将传递给程序的参数值。输入参数值时,将值键入到网格上的适当单元格中,或者将单元格留空以表示NULL,输入''(两个单引号)以表示一个空字符串,或输入仅包含两个字符的文字字符串单引号,输入“。
-
检查使用默认值?复选框,指示程序应使用“默认值”字段中的值。
-
默认值字段包含参数的默认值。
提供程序所需的值,然后单击“调试”按钮以开始逐步执行程序。保存此处提供的参数值。下次打开对话框时,将预先填充这些值。要清除值,请使用全部清除按钮。
使用调试器¶
调试器主窗口由两个面板和一个上下文相关工具栏组成。使用工具栏图标管理断点,并逐步进入或通过代码进行操作;将鼠标悬停在工具提示的图标上,该提示可标识与该图标相关的选项。工具栏选项为:
现象 | 描述 |
---|---|
Step into | 单击“进入图标”以执行当前突出显示的代码行。 |
Step over | 单击单步执行图标以执行一行代码,单步执行该代码调用的所有子功能。 子功能会执行,但除非包含断点,否则不会调试。 |
Continue/Start | 单击“继续/开始”图标以执行突出显示的代码,然后继续直到程序遇到断点或完成为止。 |
Toggle breakpoint | 使用“切换断点”图标启用或禁用断点(不删除断点)。 |
Clear all breakpoints | 单击“清除所有断点”图标以从程序中删除所有断点。 |
Stop | 单击“停止”图标以停止程序的执行。 |
调试器窗口的顶部面板显示程序主体。单击行号旁边的灰色边距以添加断点。顶部面板中突出显示的行是即将执行的行。
调试器窗口的下部面板提供了一组选项卡,使您可以查看有关程序的信息:
“参数”选项卡显示每个参数的值。
-
本地变量选项卡显示程序变量的当前值。
-
消息选项卡显示服务器返回的所有消息(错误,警告和参考消息)。
-
程序完成后,“结果”选项卡将显示服务器消息。
-
堆栈选项卡显示已调用但尚未完成的功能列表。
-
在逐步执行程序时,“本地变量”选项卡显示每个变量的当前值:
当您进入子例程时,“堆栈”选项卡将显示调用堆栈,包括每个调用者的名称,每个调用者的参数值(如果有)以及每个调用者中的线路号:
选择一个呼叫者以将焦点更改到该堆栈帧,并在上部面板中显示呼叫者的状态。
程序完成后,“结果”选项卡将显示服务器返回的消息。如果程序遇到错误,则“消息”选项卡将显示详细信息: