MySQL为Visual Studio/调试存储过程和函数

第十一章调试存储过程和函数

存储过程调试器提供了设施设置断点,步入个人陈述(步骤,步骤,步骤),评估和改变局部变量值,评估断点,和其他调试任务。

特权

在调试器中再现每一个调试会话的开始serversidedebugger数据库服务器。这个数据库可以帮助跟踪的代码和实现可观测性逻辑调试程序。你当前的连接需要有权限创建数据库,及其相关的存储程序,功能,和表。

调试器使变化在幕后暂时工具代码添加到存储程序调试。你必须有改变日常特权为每个存储过程、函数或触发你调试。(包括过程和函数调用,并触发发射,由一个程序调试。)

启动调试器

启动调试器,遵循这些步骤:

  1. 选择一个连接在Visual Studio服务器资源管理器。

  2. 扩大存储过程文件夹中。直接只能调试存储过程。调试一个用户定义的函数,创建一个存储过程调用函数。

  3. 单击一个存储过程节点,然后右键单击并从上下文菜单中选择调试程序

    图11.1选择一个存储程序调试

    存储过程调试器的屏幕截图,显示如何选择一个存储程序调试

使用

在这一点上,Visual Studio调试模式开关,打开程序的源代码模式正在调试,设置在第一个语句。

如果最初的程序调试有一个或多个参数,弹出将显示一个网格(每一行参数和三个列:一个用于参数,一个参数值(这是可编辑),一个用于取消,参数值(复选框)。设置所有参数值后,你可以按下好吧启动调试会话,或者取消取消了调试会话。

图11.2设置参数(1 2)

设置参数(1 2)

图11.3设置参数(2 (2)

设置参数(2 (2)

如何调试器功能

有可见性存储程序的内部工作,调试器准备一个特殊版本的程序,功能,或触发正在调试,检测与额外的代码来跟踪当前行介入和所有的局部变量的值。其他存储过程、函数、触发器从正在调试的程序插装一样。调试版本的程序自动为你准备,和调试会话结束时(通过紧迫F5转变+F5原始版本的例程),自动恢复。

原始版本的副本的每个检测例程(版本没有仪器)存储在AppData \ \ MySqlDebuggerCache徘徊当前Windows用户的文件夹(通过调用返回的路径System.Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData)在。net,加上附加MySqlDebuggerCache。有一个为每个检测程序文件,命名routine_name.mysql。例如,在Windows 7中,用户姓名参考小组路径是C:\Users\fergs\AppData\Roaming\ MySqlDebuggerCache

两个线程,一个用于调试器,一个正在调试的程序。线程在严格交替运行,调试器和常规之间转换的每个语句执行存储程序。

基本的调试操作

调试器有相同的外观和感觉作为c#标准的Visual Studio调试程序,VB。净或c++。特别是,以下是正确的:

当地人和手表

  • 显示当地人选项卡中,选择菜单项调试,窗户,当地人

    当地人选项卡列出所有可用的变量在当前范围:定义的变量声明在任何时候在常规、参数参数和会话变量引用的。

  • 如果最后一步操作改变当地的价值,其价值将以红色突出显示(另一个语句之前执行或走。

  • 你可以改变任何地方的价值。

  • 显示选项卡中,选择菜单项调试,窗户,

    定义一个手表,任何有效的MySQL表达式类型,可选地包括函数调用。如果观察评估当前上下文中的意义(当前堆栈帧),它会显示它的价值,否则它将显示一个错误消息在同一行表定义了。

  • 调试触发器时,除声明任何当地人或会话变量引用,新老对象(适用时)将上市。例如在一个触发器插入等一个表定义:

    创建表t1 (int id,名字varchar (50));

    当地人将列出的额外变量new.idnew.myname。对于一个更新触发,你还将获得额外的变量old.idold.myname。这些变量的新老对象可以操纵任何普通局部变量一样。

    图11.4调试触发器

    调试一个触发器

调用堆栈

  • 显示调用堆栈选项卡中,选择菜单项调试,窗户,调用堆栈

  • 堆栈跟踪(在调用堆栈选项卡)将列出所有堆栈跟踪,每个例程调用。用一个黄色标记的是当前步进点。在编辑器中单击另一个将激活的选项卡程序源,强调绿色走最后一个语句。

    图11.5调用堆栈

    调用堆栈

步进

  • 步进一个新例程开始在第一个可执行指令(不包括:处理器,光标声明,等等)。

    图11.6调试步进

    调试步进

    图11.7函数步进(1 2)

    步进功能(1 2)

    图11.8函数步进(2 (2)

    步进功能2 (2)

  • 进入一个条件处理程序的代码,必须在剩下的触发条件MySQL程序。

  • 执行下一个语句用黄色突出显示。

  • 继续走,你可以选择进入(按),走出(按F10)或跨过(按转变+)。

  • 你可以走出的任何函数、触发器和存储过程。如果你从主程序时,它将运行这个程序完成并完成调试会话。

  • 你可以跨过存储过程调用、存储功能,和触发器。(跨过一个触发器,跨过声明会导致引发火灾)。

  • 走进一条语句时,调试器将进入每个函数调用语句,每个触发发射的声明。他们正在调试的顺序是相同的MySQL服务器执行顺序。

  • 你可以进入触发器触发插入,删除,更新,取代语句。

  • 还有,你进入一个存储函数的次数或触发取决于有多少行评估函数或引发的影响。例如,如果你按下(进入)到一个更新语句修改三行(调用函数中的一列条款,从而调用函数的三行),你会进入函数连续三次,一次为每一行。可以通过禁用加速调试会话中定义的任何断点给定的存储功能和紧迫转变+走出。在这个例子中,顺序的不同实例存储特定于服务器的功能调试:当前的MySQL服务器实例使用的相同的顺序来评估这三个函数调用。

断点

  • 显示断点选项卡中,选择菜单项调试,窗户,断点

  • 断点选项卡将显示定义的所有断点。从这里,你可以一个接一个地启用和禁用断点或一次(使用工具栏上的断点选项卡)。

  • 您可以定义新的断点只在调试会话。点击左侧的灰色边框的MySQL编辑器,或者点击在MySQL和新闻编辑F9。熟悉Visual Studio的方式,你按下F9一旦在这一行中创建一个断点,断点,再删除。

  • 一旦定义断点,它会显示启用(填充红色圆圈离开当前行如果放置断点的行是一个有效的语句)或禁用(作为一个非填充型红色圆圈左到当前行如果放置断点的行是无效的)。

  • 定义条件断点,创建断点后,红点右键,选择条件……。你可以把任何有效的MySQL表达式和国家如果条件是真的已经改变了。前者将触发断点每次条件为真时,后者每次条件值已经改变了。(如果你定义一个条件断点,它并不足以进入符合定义的断点触发断点。)

    图11.9条件断点

    条件断点

    图11.10表达式和断点

    表情和断点

  • 定义通过计数断点,创建断点后,红点右键,选择计数……。在弹出的对话框中,定义的特定条件集合。例如,当计数等于打破和一个值3将触发断点第三次冲击。

其他功能

  • 终止调试会话(当前调用堆栈和执行的例程),出版社转变+F5

  • 运行程序完成(或者直到下一个断点遇到),出版社F5

  • 对于所有功能您可以使用(除了快捷方式记录),看到的选项调试菜单的Visual Studio。

限制

  • 正在调试代码不能使用get_lockrelease_lockMySQL功能,因为它们是由调试器内部基础设施同步使用调试器和调试程序。

  • 正在调试代码必须避免使用任何事务代码(开始事务,提交,回滚)由于消除的可能性调试器的内容表。(在未来可能会取消这个限制)。

  • 你不能调试的例程serversidedebugger数据库。

  • 正在调试的程序运行的MySQL服务器可以是任何MySQL服务器版本5.0后,和任何受支持的平台上运行。

  • 总是在测试和开发服务器上运行调试会话,而不是针对MySQL生产服务器,因为调试可引起暂时的性能问题,甚至死锁。正在调试的测试版本的例程使用锁,可能不属于生产代码的其余部分。

键盘快捷键

以下列表总结了调试键盘快捷键:

  • F9切换断点

  • :进入一次

  • F10:一步一

  • 转变+:走出一次

  • F5:跑

  • 转变+F5:中止当前的调试会话