MySQL源码系列_Xcode调试

It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way. 

                                                                                                                  -- 「双城记」

在应用层面工作的工程师在谈论到MySQL的时候,经常有一种熟悉又陌生的感觉。提到索引(B+树/Cardinality/主键索引/二级索引/联合索引),锁(lock/latch/记录锁/阻塞/死锁)和事务(redo/undo/事务隔离/分布式事务)等诸多概念的时候会觉得每个概念都在书中或者别人的博客里面读过原理,但具体到用代码如何实现,又往往感到无法深入。解决这个问题,我们需要经历信息的知识化过程,如下图。(当然后面还有一个大智慧化的过程啊哈哈哈哈)

Information->Knowledge->Wisdom

对于复杂的代码工程,我们知识化信息的手段当然是RTFSC(Read the Fucking Source Code:-)。当然源代码的含义不仅仅是一堆字符本身,它代表了背后的设计,算法和性能等诸多考虑。

这篇文章主要step-by-step介绍如何在mac上用Xcode来调试MySQL源代码。

我们需要准备的工具如下:

1. Xcode。AppStore上面搜索 Xcode,然后下载安装即可。整个过程耗时略长。

2. GDB。brew install GDB 即可。

3. Cmake。MySQL的编译是采用的Cmake ,官网直接下载安装即可。

4. MySQL源代码。推荐推荐Percona 版本或者Mariadb。Percona 或者 Mariadb

以percona-server-5.6.24为例。Cmake的-G “Xcode”选项会生成Xcode的工程文件。

Cmake 之后,会生成一个xcodeproj的工程文件,使用xcode 打开就可以把mysql工程加入到 xcode了。

cd  percona-server-5.6.24 && mkdir work && cmake . -G"Xcode"-DWITH_DEBUG=1-DWITH_TOKUDB_STORAGE_ENGINE=OFF-DWITHOUT_TOKUDB_STORAGE_ENGINE=ON-DCMAKE_INSTALL_PREFIX=/path-to/percona-server-5.6.24/work

在加入了Xcode之后,直接点击xcode的编译按钮就可以进行编译和build了,等完成之后会生成对应的二进制可执行文件。这个过程其实就是手工执行 make && make install的过程。但是 编译完成需要自己手工进行可执行文件的copy工作。

cd work ; mkdir {bin,share,scripts,data} && cp sql/Debug/mysqld work/bin/ && cp client/Debug/mysql* work/bin/ && cp extra/Debug/my_print_defaults work/bin/ && cp -r sql/share/* work/share/ && cp -r scripts/* work/scripts/ && chmod +x work/scripts/* && cp scripts/*.sql  work/share/ && cp support-files/*.cnf work/share/

编辑mysqld的scheme,添加启动变量和env变量。


启动变量设置

然后运行mysqld。这时候就可以用mysql命令连到数据库上执行SQL语句了。

然后就可以随心所欲,设置断点,查看内存,网络,cpu,变量等各种信息啦。


调试

ENJOY

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容