mysql 源码入门阅读调试笔记.

1. 先搭建windows 调试环境. mysql5.6在Windows下编译,试探过程记录. http://blog.csdn.net/fei33423/article/details/49398581 

1.1 安装好对应的studio插件

2. 搜索了几篇源代码结构和基本数据结构的文章.

MySQL源码分析以及目录结构 http://blog.sina.com.cn/s/blog_7045cb9e0100t5v9.html

补充:

enum enum_server_command
{
  COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST,
  COM_CREATE_DB, COM_DROP_DB, COM_REFRESH, COM_SHUTDOWN, COM_STATISTICS,
  COM_PROCESS_INFO, COM_CONNECT, COM_PROCESS_KILL, COM_DEBUG, COM_PING,
  COM_TIME, COM_DELAYED_INSERT, COM_CHANGE_USER, COM_BINLOG_DUMP,
  COM_TABLE_DUMP, COM_CONNECT_OUT, COM_REGISTER_SLAVE,
  COM_STMT_PREPARE, COM_STMT_EXECUTE, COM_STMT_SEND_LONG_DATA, COM_STMT_CLOSE,
  COM_STMT_RESET, COM_SET_OPTION, COM_STMT_FETCH, COM_DAEMON,
  COM_BINLOG_DUMP_GTID,
  /* don't forget to update const char *command_name[] in sql_parse.cc */


  /* Must be last */
  COM_END
};

"select * from table" 语句在 THD的net中.

3. 参考上文 先初步静态看了下 初始化源代码 ,网络启动, 网络监听, 命令执行的源代码.

查看了sql_parser.cc的outline ( file structure ) ,找到一个execute_sqlcom_select ,看了下调用堆栈.

加断点在参考文中说明中的

sql_parser.cc的   switch (command) {
  case COM_INIT_DB:
  {}

然后 进行调试.

会有很多command是COM_PING


4. 有一些是专门给debug用的函数, 不知道有什么好处.比如说execute_sqlcom_select调用堆栈里的 handle_connection_in_main_thread (mysqld.cc)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值