探索MYSQL源代码–准备工作

mysql源代码,编译的时候要注意添加如下选项,增加symbol

./configure --with-debug

 

使用git来查看自己对源代码做过的改动,方便发现代码的变化

sudo apt-get install  git-doc
sudo  apt-get install git-core

把mysql代码加入到git里

cd mysql-source
git init
git add *.h
git add *.c
git add *.cc

 

安装cscope,方便快速切换。
具体的步骤见这篇文章
愿意的话可修改一下cscope.vim 文件里的nmap

nmap s :vert scs find s =expand("")
nmap g :vert scs find g =expand("")
nmap c :vert scs find c =expand("")
nmap t :vert scs find t =expand("")
nmap e :vert scs find e =expand("")
nmap f :vert scs find f =expand("")
nmap i :vert scs find i ^=expand("")$
nmap d :vert scs find d =expand("")

这样的好处就是ctrl+] 调到函数内部,ctrl+n+g 跳出垂直窗口显示代码

gdb调试会涉及到重复set args,我们可以利用gdb的macro-file来避免重复的输入。

涉及到多线程编程,为了让其他线程继续运行,需要设置
set scheduler-locking off

另外mysql对SIGINT设置了sigprocmask。启动mysqld时需设置参数–gdb

于是我们的macro-file就是

b main
r --user=mysql --gdb
set scheduler-locking off

 

开始debug

gdb mysqld -x macro-file

 

觉得文章有用?立即: 和朋友一起 共学习 共进步!

猜您喜欢

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>