MySQL源码分析及核心内幕之2 -- 源码调试之gdb
2014-04-01 14:43
651 查看
由前面一篇博文中,我们已经知道,MySQL源码目录下的BUILD目录是各种平台使用的编译脚本,我们要用的是debug版本,以方便我们使用gdb来调试MySQL,所以使用的脚本是BUILD/compile-pentium-debug来配置MySQL的编译,首先,进入mysql源码根目录,执行以下命令:
[html] view
plaincopy
>BUILD/compile-pentium-debug --prefix=$HOME/mysql-bin
安装目录为$HOME/mysql-bin,然后,执行安装:
[html] view
plaincopy
>make && make install
第三步是生成mysql系统库:
[html] view
plaincopy
>cd $HOME/mysql-bin
>cd scripts
>./mysql_install_db --defaults-file=/etc/my.cnf --basedir=$HOME/mysql-bin --datadir=$HOME/mysql-bin/data
第四步是gdb运行mysqld:
[html] view
plaincopy
>gdb --args ~/mysql-bin/bin/mysqld --defaults-file=/etc/my.cnf --basedir=~/mysql-bin --datadir=~/mysql-bin/data
(gdb) br handle_one_connection #设置断点
c #继续运行
第五步是在另一个shell中运行客户端程序mysql连接mysqld服务端:
[html] view
plaincopy
>cd $HOME/mysql-bin
>cd bin
>./mysql
第六步是查看gdb输出:
[html] view
plaincopy
Breakpoint 1, handle_one_connection (arg=0x86ede38) at sql_connect.cc:1076
1076 THD *thd= (THD*) arg;
(gdb) bt
#0 handle_one_connection (arg=0x86ede38) at sql_connect.cc:1076
#1 0x4fc133a8 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#2 0x4fb647fe in clone () from /lib/tls/i686/cmov/libc.so.6
使用gdb调试基本上就是这些步骤,以后研究源代码时还会进行这样的调试。
[html] view
plaincopy
>BUILD/compile-pentium-debug --prefix=$HOME/mysql-bin
安装目录为$HOME/mysql-bin,然后,执行安装:
[html] view
plaincopy
>make && make install
第三步是生成mysql系统库:
[html] view
plaincopy
>cd $HOME/mysql-bin
>cd scripts
>./mysql_install_db --defaults-file=/etc/my.cnf --basedir=$HOME/mysql-bin --datadir=$HOME/mysql-bin/data
第四步是gdb运行mysqld:
[html] view
plaincopy
>gdb --args ~/mysql-bin/bin/mysqld --defaults-file=/etc/my.cnf --basedir=~/mysql-bin --datadir=~/mysql-bin/data
(gdb) br handle_one_connection #设置断点
c #继续运行
第五步是在另一个shell中运行客户端程序mysql连接mysqld服务端:
[html] view
plaincopy
>cd $HOME/mysql-bin
>cd bin
>./mysql
第六步是查看gdb输出:
[html] view
plaincopy
Breakpoint 1, handle_one_connection (arg=0x86ede38) at sql_connect.cc:1076
1076 THD *thd= (THD*) arg;
(gdb) bt
#0 handle_one_connection (arg=0x86ede38) at sql_connect.cc:1076
#1 0x4fc133a8 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#2 0x4fb647fe in clone () from /lib/tls/i686/cmov/libc.so.6
使用gdb调试基本上就是这些步骤,以后研究源代码时还会进行这样的调试。
相关文章推荐
- Ubuntu 默认壁纸历代记
- 关于Ubuntu 11.10启动提示waiting for the network configuration的问题
- 在 Ubuntu 桌面中使用文件和文件夹
- ubuntu下chrome无法同步问题解决
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- Ubuntu Linux使用体验
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 使用 GNOME 优化工具自定义 Linux 桌面的 10 种方法
- 以Ubuntu 9.04为例 将工作环境迁移到 Linux
- VirtualBox虚拟机XP与宿主机Ubuntu互访共享文件夹
- 从USB安装Ubuntu Server 10.04.3 图文详解
- MySQL 备份和恢复策略
- Linux-Ubuntu 10.04安装Cadence-ic610 方法总结图解
- Ubuntu 12.04和Windows 7双系统安装图解
- mac下安装mysql(转载)