用gdb调试mysql
mysql的源代码很多,估计有百万行以上了,如何能够快速了解其内容,跟踪代码运行是一个好方法。mysql的调试有很多方法,下面来探讨一下用其自带的mysql-test-run命令和gdb调试。
首先进入mysql-test/t
p1
这个目录下面有很多测试用例,就是很多用来测试的sql语句
p2
新建一个名为example.test的文件,在里面输入select 1;
p3
输入以下命令建立record
p4
输入./mysql-test-run --gdb example开始调试
p5
我们可以看到gdb窗口打开了并在main函数那里遇到断点停下来
p6
输入c,让程序继续运行,稍等片刻程序在port 3000等待客户端连接
p7
打开一个客户端,命令./mysql -uroot -h127.0.0.1 --port13000即可以连接到服务器
p8
我们打开mysql的源代码,假设要调试mysql_insert 函数
p9
在gdb里按下ctrl+C,然后输入b Sql_cmd_insert::mysql_insert在改函数处设置断点
p10
然后我们依次创建一个数据库和表。插入数据
p11
在gdb里输入c,继续程序的运行,我们可以看到程序在Sql_cmd_insert::mysql_insert处暂停
p12
接下来就可以用gdb的命令来跟踪程序的运行了,具体参考gdb的手册