Transact-SQL 调试程序信息

适用范围:SQL Server

每次当调试器对特定 Transact-SQL 语句暂停执行时,可以使用不同调试器窗口来查看当前执行状态。

调试器窗口

在调试程序模式下,调试程序将在查询编辑器窗口旁边打开窗口。 调试程序会在所选窗口中显示其信息。 每个调试器窗口都有选项卡,可选择这些选项卡以控制在窗口中显示哪些信息。 调用堆栈、断点、异常设置和输出选项卡包含在一个窗口中。 Watch1、Watch2、Watch3 和 Watch4 选项卡包含在一个窗口中。 “线程”和“局部变量”窗口会单独显示。

注意

以上说明适用于调试器窗口的默认位置。 可以拖动选项卡,将其从一个窗口移到另一个窗口,或者取消停靠选项卡以创建一个新窗口以容纳所选选项卡。

默认情况下,并非所有选项卡或窗口都处于活动状态。 若要打开特定窗口,请在“调试”菜单上选择“Windows”,然后选择要查看的窗口。

Transact-SQL 表达式

表达式是 Transact-SQL 子句,其计算结果为单个标量值,例如变量或参数。 调试程序窗口可以显示当前赋给表达式的数据值,这些值最多可在 5 个选项卡或窗口中显示:“局部变量”“Watch1”“Watch2”“Watch3”和“Watch4”

“局部变量”窗口显示 Transact-SQL 调试器当前作用域中局部变量的信息。 调试器在代码的不同部分运行时, “局部变量” 窗口中列出的表达式集也会发生变化。

四个“监视”窗口中的表达式并不仅限于列出变量的标识符。 可以通过指定 Transact-SQL 表达式计算出单个值(如向变量添加数字),或使用 SELECT 语句计算出单个值。 示例包括:

  • 变量名称,如 @IntegerCounter。

  • 变量的算术运算,如 @IntegerCounter + 1。

  • 两个字符变量的字符串运算,如 @FirstName + @LastName。

  • 返回单个值的 SELECT 语句,如 SELECT CharCol FROM MyTable WHERE PrimaryKey = 1。

四个“监视”窗口显示所选变量和表达式的信息。 在列表中添加或删除表达式之前,“监视”窗口中列出表达式集的不会变化。

若要将表达式添加到“监视” 窗口,可在“监视”窗口中空行的“名称”列中输入该表达式的名称。 还可以从“调试”菜单中选择“快速监视”,输入表达式,然后选择“添加监视”。

在“局部变量”、“监视”或“快速监视”窗口中,右键单击行,然后选择“编辑值”,即可设置变量的数据值。 “局部变量” 窗口、 “监视” 窗口和 “快速监视” 对话框中的 “值” 列都支持文本、XML 和 HTML 数据可视化程序。 可视化程序由 “值” 列右侧的放大镜数据提示来表示。 在与数据类型匹配的显示结果中,可以使用可视化程序查看文本、XML 或 HTML 数据值,例如在浏览器窗口中查看 XML 文件。

在调试模式中,当您将鼠标指针移至某个标识符上方时,将弹出 “快速信息” ,显示表达式的名称及其当前值。 有关详细信息,请参阅快速信息 (IntelliSense)

断点

可以使用“断点”窗口来查看和管理断点。 有关详细信息,请参阅 逐句通过 Transact-SQL 代码

调用堆栈

“调用堆栈”窗口显示当前执行位置,以及关于执行如何从原始编辑器窗口开始,通过所有 Transact-SQL 模块(函数、存储过程或触发器),到达当前执行位置的信息。 “调用堆栈” 窗口中的每一行称为一个堆栈帧,表示以下任何一项:

  • 当前的执行位置。

  • 从一个模块对另一个模块的调用。

  • 从编辑器窗口对 Transact-SQL 模块的调用。

堆栈的顺序与调用模块的顺序相反。 当前执行位置在堆栈的顶部,原始调用则在底部。 堆栈帧左侧空白处中的黄色箭头标识调试器暂停执行所在的帧。

“名称” 列记录以下信息:

  • 包含调用了下一级的代码行的源模块。

  • 调用了堆栈上下一个模块的代码行。

  • 如果调用带参数的存储过程或函数,则还会列出所有参数的名称、数据类型和值。

“局部变量”“监视”和“快速监视”窗口中的表达式都是针对当前堆栈帧求值的。 默认情况下,当前堆栈帧是堆栈中的顶帧,调试器在此处暂停执行。 当指定其他堆栈帧作为当前帧时,则 “局部变量”“监视”“快速监视” 窗口中的表达式将针对新堆栈帧重新求值。 可以通过双击帧,或者单击帧并选择“切换到帧”来更改当前堆栈帧。 此时, “局部变量”“监视”“快速监视” 窗口中的表达式将针对新帧重新求值。 只要当前堆栈帧不是堆栈中的顶帧,堆栈帧的左侧空白处就会有一个绿色箭头标识当前堆栈帧。

当你右键单击某个堆栈帧并选择“转到源代码”时,该帧的代码会显示在“查询编辑器”窗口中。 但是,该帧不会成为当前帧,“局部变量”“监视”“快速监视”窗口中的内容也不会更改。

系统信息和 Transact-SQL 结果

调试器在 “输出” 窗口中列出其状态和事件消息。 窗口包括调试程序何时附加到其他进程或调试程序线程何时结束等信息。

处于调试模式下时, “结果”“消息” 选项卡在查询编辑器中仍处于活动状态。 “结果”选项卡继续显示调试会话过程中执行的 Transact-SQL 语句的结果集。 “消息”选项卡继续显示系统消息,例如受影响的行数,以及 PRINT 和 RAISERROR 语句的输出。