用gdb调试mysql

用gdb调试mysql

mysql的源代码很多,估计有百万行以上了,如何能够快速了解其内容,跟踪代码运行是一个好方法。mysql的调试有很多方法,下面来探讨一下用其自带的mysql-test-run命令和gdb调试。

首先进入mysql-test/t

p1用gdb调试mysql_第1张图片

这个目录下面有很多测试用例,就是很多用来测试的sql语句

p2用gdb调试mysql_第2张图片

新建一个名为example.test的文件,在里面输入select 1;

p3用gdb调试mysql_第3张图片

输入以下命令建立record

p4用gdb调试mysql_第4张图片

输入./mysql-test-run --gdb example开始调试

p5用gdb调试mysql_第5张图片

我们可以看到gdb窗口打开了并在main函数那里遇到断点停下来

p6用gdb调试mysql_第6张图片

输入c,让程序继续运行,稍等片刻程序在port 3000等待客户端连接

p7用gdb调试mysql_第7张图片

打开一个客户端,命令./mysql -uroot -h127.0.0.1 --port13000即可以连接到服务器

p8用gdb调试mysql_第8张图片

我们打开mysql的源代码,假设要调试mysql_insert 函数

p9用gdb调试mysql_第9张图片

在gdb里按下ctrl+C,然后输入b Sql_cmd_insert::mysql_insert在改函数处设置断点

p10用gdb调试mysql_第10张图片

然后我们依次创建一个数据库和表。插入数据

p11用gdb调试mysql_第11张图片

在gdb里输入c,继续程序的运行,我们可以看到程序在Sql_cmd_insert::mysql_insert处暂停

p12用gdb调试mysql_第12张图片

接下来就可以用gdb的命令来跟踪程序的运行了,具体参考gdb的手册




你可能感兴趣的:(linux,数据库)