有没有办法执行以下操作:
我有一个MySQL数据库,并且还有很多存储过程。我在C中使用MySQL客户端库连接到此DB,并调用存储过程。有没有办法在存储过程中设置断点,这样当从C程序(使用mySql客户端库)调用到存储过程中时,控制流程在C程序中停止,我们可以进入调用的存储过程任何级别的嵌套和考虑变量等(如任何体面的C调试提供)?
有没有办法做到以上几点?如果没有通过普通的MySql,可以通过一些第三方工具等。
非常感谢帮助。
感谢
答案 0 :(得分:0)
调试MySQL存储过程并不容易。
但是,您可以做的是使用INSERT将它们设置到某些描述的日志表中。同样,如果你有一个用户定义的函数将东西打印到日志中,你可以在不同的点调用它来查看正在发生的事情。
这些都不会中断流程。
如果您调用了用户定义的函数,则可以在那里轻松设置断点并使用gdb附加到mysqld。但是,检查状态(即变量)并不简单。
答案 1 :(得分:0)
感谢您的回复马克。所以你推荐的方法类似于下面的Dr.Dobbs期刊文章drdobbs.com/database/218100564根据我的理解,MySql的“调试”工具如DbForge for MySql也自动化了这个过程,但实质上是使用同样的方法。即他们将params或其他东西打印出来到各种调试表(可以包括时间戳等,以便在稍后查看调试表时获得控制流和params的感觉)。这些工具的唯一帮助是它们省去了创建调试表和在存储过程中的各个点手动编写插入语句的麻烦。 是这样吗? 这仍然是一些帮助,但我正在寻找的是可用的东西,只是在断点处进入存储过程中继续来自C程序的控制流,并让我们检查从C app传递到存储过程的params。踩到,等等。显然没有工具可以做同样的事情吗?
有人使用过DbForge的调试功能吗?从这个网址看,它们似乎可能支持我正在寻找的东西,即使是部分?
http://www.devart.com/dbforge/mysql/studio/articles/debugging.html
MArk,我不明白你对闯入mysql守护进程本身的评论。